La aplicación React Native está conectada a Weibo para iniciar sesión. No es necesario compartir. Encontré reaccionar-native-weibo en github. Desafortunadamente, la biblioteca no se ha actualizado durante un año y no utiliza la última versión del SDK de Weibo (versión del SDK de Android: 4.1, SDK de iOS versión 3.2.1), no es muy compatible con la última versión de RN (0.55.4), por lo que escribí esta biblioteca yo mismo, que implementa el inicio de sesión en Weibo pero no implementa la función de compartir.
$ npm install react-native-weibo-login --save
o
yarn add react-native-weibo-login
$ react-native link react-native-weibo-login
Agregue node_modules/react-native-weibo-login/ios/WeiboSDK.bundle
en su proyecto, de lo contrario se bloqueará.
En XCode, en el navegador de proyectos, haga clic derecho Libraries
➜ Add Files to [your project's name]
, vaya a node_modules
➜ react-native-weibo-login
y agregue RCTWeiBo.xcodeproj
.
En XCode, en el navegador de proyectos, seleccione su proyecto.
Agregar
a Build Phases
de su proyecto ➜ Link Binary With Libraries
.
En el navegador de proyectos, en Targets
➜ info
➜ URL types
, agregue un nuevo tipo de URL, el valor Identifier
es com.weibo
, el valor URL Schemes
es wb
+ you weibo appKey
, como por ejemplo: wb2317411734
.
Haga clic derecho en Info.plist
para abrir como código fuente, inserte las siguientes líneas:
< key >LSApplicationQueriesSchemes</ key >
< array >
< string >sinaweibohd</ string >
< string >weibosdk</ string >
< string >sinaweibo</ string >
< string >weibosdk2.5</ string >
</ array >
Copie lo siguiente en AppDelegate.m
:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [RCTLinkingManager application:application openURL:url
sourceApplication:sourceApplication annotation:annotation];
}
android/app/src/main/java/[...]/MainActivity.java
import com.gratong.WeiBoPackage;
a las importaciones en la parte superior del archivo.new WeiBoPackage()
a la lista devuelta por el método getPackages()
.android/settings.gradle
: include ':react-native-weibo-login'
project(':react-native-weibo-login').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-weibo-login/android')
android/app/build.gradle
: compile project(':react-native-weibo-login')
android/build.gradle
: maven { url "https://dl.bintray.com/thelasterstar/maven/" }
allprojects {
repositories {
mavenLocal()
jcenter()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
all
significa solicitar todos los permisos de alcance. Para obtener más información sobre los conceptos y precauciones de Scope, consulte: http://open.weibo.com/wiki/Scope
https://api.weibo.com/oauth2/default.html
, que debe ser coherente con la configuración de redirecciónURI en la configuración avanzada de la aplicación en la plataforma abierta de Sina Weibo; de lo contrario, el inicio de sesión fallará. import * as WeiBo from 'react-native-weibo-login' ;
let config = {
appKey : "2317411734" ,
scope : 'all' ,
redirectURI : 'https://api.weibo.com/oauth2/default.html' ,
}
WeiBo . login ( config )
. then ( res => {
console . log ( 'login success:' , res )
//登陆成功后打印出的数据如下:
// {
// refreshToken: '2.00Gc2PbDcecpWC127d0bc690FE7TzD',
// type: 'WBAuthorizeResponse',
// expirationDate: 1686362993740.243,
// userID: '3298780934',
// errCode: 0,
// accessToken: '2.00Gc2PbDcecpWCa981899f410o5hEX'
// }
} ) . catch ( err => {
console . log ( 'login fail:' , err )
} )