我目前在我的本机应用程序中实现了一个Facebook登录按钮。用户成功登录后,我会获取一些信息,名字,姓氏和电子邮件地址。
阅读SDK文档和在线示例后,我可以看到两种不同的方法来实现这一目标:
使用LoginButton& AccessToken然后执行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?
有首选方法吗?
答案 0 :(得分:0)
我理解的是
使用 LoginButton&amp; AccessToken然后执行GraphRequest
因此,您需要检查您的AccessToken是否为零或者您的currentToken是否有效,如果您有accessToken,那么您可以直接获取数据而无需单击Facebook按钮或登录按钮。所以这意味着如果你不执行注销方法或卸载应用程序,你仍然可以通过图形请求的accessToken帮助获取数据。
现在,当您使用 LoginManager时,请执行GraphRequest
所以,这种方法让你每次都可以通过Safari获取facebook App的自动化过程。 LoginManager通常每次在Safari中打开Facebook然后返回应用程序并提供数据。
希望你能理解。
谢谢