Ios 反应本机-fbsdk LoginManager与LoginButton
我目前正在我的react原生应用程序中实现一个Facebook登录按钮。一旦用户成功登录,我会抓取一些信息,名字,姓氏和电子邮件地址 阅读SDK文档和在线示例后,我可以看到实现这一点的两种不同方法:Ios 反应本机-fbsdk LoginManager与LoginButton,ios,facebook,react-native,fbsdk,react-native-fbsdk,Ios,Facebook,React Native,Fbsdk,React Native Fbsdk,我目前正在我的react原生应用程序中实现一个Facebook登录按钮。一旦用户成功登录,我会抓取一些信息,名字,姓氏和电子邮件地址 阅读SDK文档和在线示例后,我可以看到实现这一点的两种不同方法: 使用LoginButton和AccessToken,然后执行GraphRequest 然后使用LoginManager执行GraphRequest(我选择的方法): 类LoginView扩展组件{ _fbAuth=()=>{ LoginManager.logInWithReadPermissions
类LoginView扩展组件{
_fbAuth=()=>{
LoginManager.logInWithReadPermissions(['public_profile','email'])。然后(函数(结果){
如果(结果被取消){
console.log('登录已取消')
}
否则{
console.log('login success'+result.grantedPermissions)
const infoRequest=new GraphRequest('/me'{
参数:{
“字段”:{
'字符串':'电子邮件,名字,姓氏,图片'
}
}
},(误差、分辨率)=>{
console.log(err,res);
});
新建GraphRequestManager().addRequest(infoRequest).start();
}
},函数(错误){
console.log('发生错误:'+错误)
})
}
render(){
返回(
{this.\u fbAuth()}}>
使用Facebook登录
)
}
}
AccessToken.getCurrentAccessToken()。然后(…)
使用LoginManager,我可以在不使用AccessToken的情况下获取用户信息-LoginManager是否在幕后调用AccessToken
有更好的方法吗?据我所知
使用登录按钮和访问令牌时,请执行GraphRequest
因此,您需要检查您的AccessToken是否为零,或者您的currentToken是否有效,如果您有AccessToken,那么您可以直接获取数据,而无需单击Facebook按钮或登录按钮。所以这意味着,如果您不执行注销方法或卸载应用程序,您仍然可以通过图形请求的accessToken获取数据
现在,当您使用LoginManager时,请执行GraphRequest
所以,这种方法每次都会让你来到Safari,进行facebook应用程序的自动化过程。LoginManager通常每次在Safari中打开Facebook,然后返回应用程序并提供数据
希望您能理解。谢谢你查看我的答案谢谢你的回复。在这两者之间,有没有更好的方法可以使用?最好使用登录按钮和accesstoken,因为如果你的accesstoken不是零或者accesstoken没有问题的话,这将在不打开facebook页面的情况下为你提供数据。谢谢您的输入。@JeckyModi有办法删除注销按钮吗?因为,当我们登录并导航到下一个屏幕时。但在这个过程中,它会变为注销按钮。从用户体验的角度看,它看起来很糟糕。有没有办法从登录按钮中删除注销选项?@LakshmanDiwaakar您可以使用自定义按钮登录facebook
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>
)
}
}