Need help with react-native-weibo?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

reactnativecn
127 Stars 83 Forks 30 Commits 38 Opened issues

Services available

!
?

Need anything else?

Contributors list

react-native-weibo

React Native的新浪微博登录插件, react-native版本需要0.17.0及以上

如何安装

1.首先安装npm包

npm install react-native-weibo --save

2.link

自动link方法

react-native link

手动link~(如果不能够自动link)

ios

a.打开XCode's工程中, 右键点击Libraries文件夹 ➜ Add Files to <...> b.去node_modules ➜ react-native-weibo ➜ ios ➜ 选择 RCTWeiboAPI.xcodeproj c.在工程Build Phases ➜ Link Binary With Libraries中添加libRCTWeiboAPI.a

Android
// file: android/settings.gradle
...

include ':react-native-weibo' project(':react-native-weibo').projectDir = new File(settingsDir, '../node_modules/react-native-weibo/android')

// file: android/app/build.gradle
...

dependencies { ... compile project(':react-native-weibo') }

android/app/src/main/java//MainApplication.java
中添加如下两行:
...
import cn.reactnative.modules.weibo.WeiboPackage;  // 在public class MainApplication之前import

public class MainApplication extends Application implements ReactApplication {

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { @Override protected boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; }

@Override
protected List<reactpackage> getPackages() {
  return Arrays.<reactpackage>asList(

         new WeiboPackage(), // 然后添加这一行 new MainReactPackage() ); } };

@Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } }

3.工程配置

ios配置

node_modules/react-native-weibo/ios/libWeiboSDK/WeiboSDK.bundle
加入到工程中(必须,很重要,不然登录的时候会crash)

在工程target的

Build Phases->Link Binary with Libraries
中加入
libRCTWeiboAPI.a、libsqlite3.tbd、libz.tbd、ImageIO.framework、SystemConfiguration.framework、Security.framework、CoreTelephony.framework、CoreText.framework

Info->URL Types
中增加QQ的scheme:
Identifier
设置为
sina
,
URL Schemes
设置为你注册的微博开发者账号中的APPID,需要加前缀
wb
,例如
wb1915346979

在你工程的

AppDelegate.m
文件中添加如下代码:
#import "../Libraries/LinkingIOS/RCTLinkingManager.h"


  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; }

iOS9的适配问题

由于iOS9的发布影响了微博SDK与应用的集成方式,为了确保好的应用体验,我们需要采取如下措施:

a.对传输安全的支持

在iOS9系统中,默认需要为每次网络传输建立SSL。解决这个问题:

- 将NSAllowsArbitraryLoads属性设置为YES,并添加到你应用的plist中

NSAppTransportSecurity

NSAllowsArbitraryLoads


b.对应用跳转的支持

如果你需要用到微博的相关功能,如登陆,分享等。并且需要实现跳转到微博的功能,在iOS9系统中就需要在你的app的plist中添加下列键值对。否则在canOpenURL函数执行时,就会返回NO。了解详情请至https://developer.apple.com/videos/wwdc/2015/?id=703

- LSApplicationQueriesSchemes sinaweibohd sinaweibo weibosdk weibosdk2.5

Android

android/app/build.gradle
里,defaultConfig栏目下添加如下代码:
manifestPlaceholders = [
    WB_APPID: "微博的APPID"      //在此修改微博APPID
]

如果react-native版本<0.18.0,确保你的MainActivity.java中有

onActivityResult
的实现:
private ReactInstanceManager mReactInstanceManager;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    mReactInstanceManager.onActivityResult(requestCode, resultCode, data);
}

如何使用

引入包

import * as WeiboAPI from 'react-native-weibo';

API

WeiboAPI.login(config)

// 登录参数 
config : {  
    scope: 权限设置, // 默认 'all'
    redirectURI: 重定向地址, // 默认 'https://api.weibo.com/oauth2/default.html'(必须和sina微博开放平台中应用高级设置中的redirectURI设置的一致,不然会登录失败)
}

返回一个

Promise
对象。成功时的回调为一个类似这样的对象:
{
    "accessToken": "2.005e3HMBzh7eFCca6a3854060GQFJf",
    "userID": "1098604232"
    "expirationDate": "1452884401084.538"   
    "refreshToken": "2.005e3HMBzh8eFC3db19a18bb00pvbp"
}

WeiboAPI.share(data)

分享到微博

// 分享文字
{   
    type: 'text', 
    text: 文字内容,
}
// 分享图片
{   
    type: 'image',
    text: 文字内容, 
    imageUrl: 图片地址  
}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.