Facebook为电子邮件和生日返回undefined

我正在尝试使用Facebook API提供first_namelast_namegenderemailbirthday以便在我的网站上注册。 我使用Graph API并生成了具有必要范围的访问令牌。 我尝试在我创建应用程序的个人帐户中正确返回字段,但对于FB测试用户和朋友的帐户,它返回电子邮件和生日为“未定义”。 在graph.facebook.com中,它显示了朋友帐户的以下错误。

在此处输入图像描述

Facebook在doulingo上返回我朋友的同一帐户的电子邮件ID。

我是否正确设置权限或是否还有其他问题?

我的代码的问题是因为没有使用access_token。 我使用access_token来检索所有, first_namelast_namegenderbirthdayemail

 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); }); }; 

检查我的答案,看看这是一个众所周知的问题,但不是Facebook开发人员的错误。

编辑..这是他们在Facebook开发者网站上所说的:

“…’用户’对象的’email’字段的文档( https://developers.facebook.com/docs/reference/api/user/ )澄清了此处的预期行为,即:”this field如果没有有效的电子邮件地址,将不会被退回“。

在许多情况下,您可能认为用户应该返回一个电子邮件地址,但他们不会。 出于隐私和安全原因,无法详细说明任何特定用户的电子邮件地址不会被退回的确切原因,请不要问。 一些可能的原因:

没有电子邮件地址; 没有确认的电子邮件地址; 没有经过validation的电子邮件地址; 用户输入了一个安全检查点,要求他们重新确认他们的电子邮件地址,但他们还没有这样做; 用户的电子邮件地址无法访问。

您还需要“电子邮件”扩展权限,即使对于在文件中具有有效,已确认,可访问的电子邮件地址的用户来说……“

单击“获取访问令牌”按钮,然后选择所需的权限。 它将重新生成访问令牌和电子邮件,其他值将变为可用。

注意:

  • 要访问当前用户的生日,您需要“user_birthday”权限
  • 要访问朋友的生日,您需要“friends_birthday”权限
  • 您无法以任何代价访问朋友的电子邮件。
  • 在帐户设置中,用户需要将其电子邮件设置为“主要”以便访问,否则将返回null。

有关详细信息,请参阅此主题和此主题。