ios - react 原生 - fbsdk LoginManager 与 LoginButton
<p><p>我目前正在我的 reactnative 应用程序中实现一个 Facebook 登录按钮。用户成功登录后,我会获取一些信息,名字、姓氏和电子邮件地址。</p>
<p>阅读 SDK 文档和在线示例后,我可以看到实现此目的的两种不同方法:</p>
<ol>
<li><p>使用 LoginButton 和 AccessToken 然后执行 GraphRequest</p></li>
<li><p>使用 LoginManager 然后执行 GraphRequest(我选择的方法):</p>
<pre><code>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>
)
}
}
</code></pre> </li>
</ol>
<p>LoginManager 和 LoginButton 的主要区别是什么?</p>
<p>LoginButton的在线示例也获取当前token:<code>AccessToken.getCurrentAccessToken().then(...)</code></p>
<p>通过 LoginManager,我无需使用 AccessToken 就可以获取用户信息 - LoginManager 是否在后台调用 AccessToken?</p>
<p>有首选方法吗?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我的理解是</p>
<p>当你使用 <strong>LoginButton & AccessToken 然后做一个 GraphRequest</strong></p>
<p>因此,您需要检查您的 AccessToken 是否为 nil 或您的 currentToken 是否有效,如果您有 accessToken 则无需单击 Facebook 按钮或登录按钮即可直接获取数据。因此,这意味着如果您不执行注销方法或卸载应用程序,您仍然可以通过使用 Graph Request 的 accessToken 来获取数据。</p>
<p>现在,当您使用 <strong>LoginManager 然后执行 GraphRequest</strong></p>
<p>因此,这种方法每次都将您带到 Safari 以进行 facebook 应用程序的自动化过程。 LoginManager 通常每次在 Safari 中打开 Facebook,然后返回应用程序并提供数据。</p>
<p>希望你能理解。<br/>
谢谢</p></p>
<p style="font-size: 20px;">关于ios -react 原生 - fbsdk LoginManager 与 LoginButton,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/42356980/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/42356980/
</a>
</p>
页:
[1]