我正在尝试使用提供first_name
,last_name
,gender
,email
,birthday
的Facebook API来注册我的网站。我使用了Graph API并生成了具有必要范围的访问令牌。
我尝试在我创建应用程序的个人帐户中正确返回字段,但对于FB测试用户和朋友的帐户,它返回电子邮件和生日为“未定义”。在graph.facebook.com中,它显示了朋友帐户的以下错误。
Facebook在doulingo上为我朋友的同一帐户返回电子邮件ID。
我是否错误地设置了权限,还是有任何其他问题?
答案 0 :(得分:9)
我的代码出现问题是因为没有使用access_token。
我使用access_token检索所有,first_name
,last_name
,gender
,birthday
,email
。
function authUser() {
FB.login(checkLoginStatus, {scope:'email, user_likes'});
function checkLoginStatus(response) {
if(!response || response.status !== 'connected') {
alert('User is not authorized');
document.getElementById('loginButton').style.display = 'block';
} else {
alert('User is authorized');
document.getElementById('loginButton').style.display = 'none';
console.log('Access Token: ' + response.authResponse.accessToken);
//This has to be in your callback!
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
// access token is very important to get some fields like email, birthday
getData();
}
}
}
function getData() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.' + response.id);
});
};
答案 1 :(得分:1)
检查我的回答here,看看这是一个众所周知的问题,但不是Facebook开发人员的错误。
编辑..这就是他们在facebook开发者网站上所说的话:
“...'用户'对象的'email'字段的文档( https://developers.facebook.com/docs/reference/api/user/)澄清 这里的预期行为,是:“这个领域不会 如果没有有效的电子邮件地址,则返回“。
有很多 您可能认为用户应该收到电子邮件的情况 地址已退回,但他们不会。出于隐私和安全原因 不可能详细说明任何具体的确切原因 用户的电子邮件地址不会被退回,所以请不要问。一些 可能的原因:
帐户没有电子邮件地址;没有确认邮件 帐户地址;没有经过验证的电子邮件地址;用户输入了 安全检查点,要求他们重新确认他们的电子邮件 地址,他们还没有这样做;用户的电子邮件地址是 不可到达的。
您还需要“电子邮件”扩展权限,即使是 拥有有效,已确认,可访问的电子邮件地址的用户......“
答案 2 :(得分:0)
单击“获取访问令牌”按钮,然后选择所需的权限。 它将重新生成访问令牌和电子邮件,其他值将变为可用。
注意:
答案 3 :(得分:0)
//----------
//All you need do is add the fields you want as query strings as follows:
//----------
FB.api('/me?fields=first_name,email,last_name,name', function(response) {
console.log('Good to see you, ' + response.name + '.' + response.first_name);
});
//----------
//I hope that helps!!