我正在获得登录成功和accessToken。我做了
我试过
LoginManager.logInWithReadPermissions([
'email',
'public_profile',
'user_likes',
])
然后这个
LoginManager.logInWithPublishPermissions([
'publish_actions',
]).then((result) => {
if (result.isCancelled) {
console.log('Login cancelled');
} else {
AccessToken.getCurrentAccessToken().then((data) => {
const accessToken = data.accessToken;
const responseInfoCallback = (error, result) => {
if (error) {
console.log(error);
console.log('Error fetching data=', error.toString());
} else {
console.log('Success fetching data=', result.toString());
}
};
const infoRequest = new GraphRequest(
'/me',
{
accessToken,
parameters: {
fields: {
string: 'email,name,first_name,middle_name,last_name',
},
},
},
responseInfoCallback,
);
new GraphRequestManager().addRequest(infoRequest).start();
});
}
});
'登录成功与权限','电子邮件,public_profile' 和用户个人资料数据
{ first_name: 'XXXXXX',
name: 'XXXXXX YYYYY',
last_name: 'YYYYYY',
id: '1319989423636921696328130092' }
但是没有获得用户电子邮件ID,这里有什么问题。 如何在应用程序中登录Facebook后获取电子邮件ID。
答案 0 :(得分:5)
这就是我在项目中执行此操作并成功检索电子邮件的方式
LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends']).then(
(result) => {
if (result.isCancelled) {
console.log('Login cancelled')
} else {
AccessToken.getCurrentAccessToken().then(
(data) => {
this._fbHome();// Navigatin to next screen
}
)
}
},
(error) => {
console.log('Login fail with error: ' + error)
}
)
然后导航到下一个屏幕后,我正在提取用户数据
const infoRequest = new GraphRequest(
'/me?fields=name,email,picture.type(large)',
null,
this._responseInfoCallback
);
new GraphRequestManager().addRequest(infoRequest).start();
_responseInfoCallback = (error, result) => {
if (error) {
alert('Error fetching data: ' + error.toString());
} else {
this.setState({ userName: result.name, userEmail: result.email ,userPic:result.picture.data.url});
AsyncStorage.setItem("UserName",this.state.userName);
AsyncStorage.setItem("Email", this.state.userEmail);
AsyncStorage.setItem("UserPic", this.state.userPic);
// SharedPreferences.setItem("UserName", this.state.userName);
// SharedPreferences.setItem("Email", this.state.userEmail);
// SharedPreferences.setItem("UserPic", this.state.userPic);
console.log("Picture"+ this.state.userPic + "Name" + this.state.userName + "Email" + this.state.userEmail);
}
}
答案 1 :(得分:2)
<强>已更新强> 您在用户通过身份验证时设置权限,例如此代码
LoginManager.logInWithReadPermissions(['public_profile', 'email'])
.then(function (result) {
if (!result.isCancelled) {
return AccessToken.getCurrentAccessToken().then((data) => {
return initUser(data).then((user) => {
return {
name: user.name,
email: user.email,
photo: 'https://graph.facebook.com/' + user.id + '/picture?type=normal'
}
})
})
}
}).then((data) => {
this._navigateTo(this.props, data, 'Home')
})
在您的代码可以看到的权限中设置电子邮件
LoginManager.logInWithPublishPermissions(['public_profile', 'email']).then((result) => {
if (result.isCancelled) {
console.log('Login cancelled');
} else {
AccessToken.getCurrentAccessToken().then((data) => {
const accessToken = data.accessToken;
const responseInfoCallback = (error, result) => {
if (error) {
console.log(error);
console.log('Error fetching data=', error.toString());
} else {
console.log('Success fetching data=', result.toString());
}
};
const infoRequest = new GraphRequest(
'/me',
{
accessToken,
parameters: {
fields: {
string: 'email,name,first_name,middle_name,last_name',
},
},
},
responseInfoCallback,
);
new GraphRequestManager().addRequest(infoRequest).start();
});
}
});