我当前正在向我的React本机应用程序中实现Facebook登录按钮。用户成功登录后,我会获取一些信息,firstName,lastname和电子邮件地址。
阅读了SDK文档和在线示例后,我可以看到两种不同的方法来实现这一目标:
-
使用loginbutton&然后进行graphrequest
-
使用loginmanager进行graphrequest(我选择的方法):
class LoginView extends Component { _fbAuth = () => { LoginManager.logInWithReadPermissions(['public_profile','email']).then(function(result){ if(result.isCancelled){ console.log('loging cancelled') } else { console.log('login success' + result.grantedPermissions) const infoRequest = new GraphRequest('/me', { parameters: { 'fields': { 'string' : 'email,first_name,last_name,picture' } } }, (err, res) => { console.log(err, res); }); new GraphRequestManager().addRequest(infoRequest).start(); } }, function(error){ console.log('An error occured: ' + error) }) } render(){ return ( <TouchableHighlight style={{flex:1}} onPress={() => {this._fbAuth()}}> <View style={styles.container}> <View style={styles.buttonContainer}> <Text style={{flex:1}}>Login with Facebook</Text> </View> </View> </TouchableHighlight> ) } }
LoginManager&amp;loginbutton?
loginbutton的在线示例还获得当前令牌:AccessToken.getCurrentAccessToken().then(...)
使用loginmanager,我设法获取了用户信息而无需使用AccessToken- loginmanager在场景后面调用AccessToken吗?
是否有首选方法?
我了解的是
使用 loginbutton&amp;然后进行graphrequest
进行graphrequest因此,您需要检查您的访问权限是否为nil或您的当前语言是否有效,如果您有访问权限,则可以直接获取数据而无需单击Facebook按钮或登录按钮。因此,这意味着,如果您不执行注销方法或卸载该应用程序,则仍然可以通过与Graph请求的访问访问来获取数据。
现在,当您使用 LoginManager时,请执行GraphRequest
因此,这种方法为您带来每次Safari进行Facebook应用程序的自动化过程。LoginManager通常每次在Safari中打开Facebook,然后返回应用程序并提供数据。
希望你能理解。
谢谢