React Native Facebook使用电子邮件登录权限错误登录
问题描述:
我正在尝试构建Facebook登录视图。我遵循指南安装了SDK,最终能够登录到Facebook。但是,登录后,我无法从回调数据中提取电子邮件,尽管我在React Native中通过电子邮件发送了“权限”。以下是Facebook登录功能的一部分。React Native Facebook使用电子邮件登录权限错误登录
我能够获得“令牌,令牌到期,用户ID”,而不是电子邮件,个人资料等
var {FBLogin, FBLoginManager} = require('react-native-facebook-login');
...
<FBLogin style={{ marginBottom: 10, }}
ref={(fbLogin) => { this.fbLogin = fbLogin }}
permissions={["email","user_friends","public_profile"]}
loginBehavior={FBLoginManager.LoginBehaviors.Native}
onLogin={function(data){
console.log("Logged in!");
console.log(data);
this.setState({ user : data.credentials });
}.bind(this)}
onLogout={function(){
console.log("Logged out.");
this.setState({ user : null });
}.bind(this)}
onLoginFound={function(data){
console.log("Existing login found.");
console.log(data);
this.setState({ user : data.credentials });
console.log(this.state.user.userId);
console.log(this.state.user.permissions);
this.props.navigator.push({
title: 'Results',
component: Main
});
//
}.bind(this)}
onLoginNotFound={function(){
console.log("No user logged in.");
this.setState({ user : null });
}.bind(this)}
onError={function(data){
console.log("ERROR");
console.log(data);
}}
onCancel={function(){
console.log("User cancelled.");
}}
onPermissionsMissing={function(data){
console.log("Check permissions!");
console.log(data);
}} />
请与我分享任何想法。 最好的
答
从最初的电话获得accessToken
之后,您需要使用accessToken
拨打另外的电话以获取电子邮件/附加信息。
下面是部分示例:
<LoginButton
style={[styles.loginButton, styles.loginButtonFB]}
publishPermissions={["publish_actions"]}
onLoginFinished={
(error, result) => {
if (error) {
alert("login has error: " + result.error);
} else if (result.isCancelled) {
alert("login is cancelled.");
} else {
AccessToken.getCurrentAccessToken().then(
(data) => {
this.setState({
loading: true,
})
// HERE IS WHAT YOU NEED
fetch(`https://graph.facebook.com/me?access_token=${data.accessToken.toString()}`)
.then((response) => response.json())
.then((res) => {
var socialOptions = {
email: res.email,
firstName: res.first_name,
lastName: res.last_name,
token: data.accessToken.toString(),
uid: data.userID,
loginType: 'facebook',
}
// ignore this--custom api call sending the data to my own api
api.socialRegister(socialOptions)
.then((response) => {
// working
this.handleResponse(response);
})
.catch((error) => console.log('error', error))
})
.catch((err) => console.log('error occurred', err.message));
}) // end getCurrentAccessToken
}
}
}
onLogoutFinished={() => alert("logout")}/>
这应该是你所需要的。冰川
答
使用readPermissions(或publishPermissions)来指定其他权限,例如'email'。
<LoginButton
readPermissions={["public_profile","email"]}
publishPermissions={["publish_actions"]}
onLoginFinished={...}
onLogoutFinished={...}
/>
嗨!谢谢你的建议。我遵循你的指示!并且它在取回后似乎“res”只有两个元素(Id和名称)。我如何调用用户共享电子邮件和其他数据? –