Facebook Graph API不会返回电子邮件地址

时间:2013-05-19 02:50:46

标签: javascript facebook

修改:不重复,因为:

  • 我有许可
  • 调试令牌
  • 代码适用于测试用户

请勿在未经阅读的情况下将其标记为重复。

我正在尝试获取用户的电子邮件地址,但我没有得到它。在图形api资源管理器上,当我点击发送时,电子邮件字段变为灰色并说:

  

字段为空或访问令牌

不允许

但是当我调试令牌时,它已获得电子邮件许可

我的个人资料有一个电子邮件地址。

更新:我试过了https://developers.facebook.com/tools/console/。即使在另一台计算机上,我的个人资料也不返但是相同的代码会返回另一个帐户的电子邮件,名称和uid。

代码:

    <fb:login-button scope="email">
  Grant Permissions to make more examples work
</fb:login-button>

<button onclick="doPost()">Post to Stream</button>

<script>
function userData() {
  FB.api('/me?fields=name,email', Log.info.bind('/me callback'));
};

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    userData();
  }
});
</script>

可以锁定您的电子邮件,因此没有人可以拥有它?即使我批准了吗?

6 个答案:

答案 0 :(得分:36)

马库斯'answer引导我解决我面临的真正问题。

使用Facebook资源管理器工具调试我能够在FB.login()方法中找出set the email scope

FB.login(function(response) {
    if (response.status === 'connected'){
        FB.api('/me?fields=id,email,name', function(data) {
        console.log( data.email ) // it will not be null ;)
    })
}, {scope: 'email'});

Quickstart 指南中并不十分清楚,我希望它也可以帮助其他人。

答案 1 :(得分:32)

我有同样的问题,我想我发现了原因: 如果用户在Facebook上有未经证实的电子邮件(即Facebook向他发送了验证邮件到他的电子邮件地址,但他没有回复),即使Facebook给了您电子邮件权限,Facebook也不会将该电子邮件传递给您的应用程序(!!!)

所以我所做的就是使用他的Facebook电子邮件,如果他有一个用户名(即userName@facebook.com)。

答案 2 :(得分:20)

在我的错误报告被标记为重复,并且我阅读了所有帖子和链接后,我得到了导致这个问题的原因以及如何修复。

问题 Facebook似乎有时会忘记图形API上的主要电子邮件(但它仍然存在于首选项中。)

<强>解决方案 受影响的用户必须删除电子邮件,保存设置,然后重新添加地址,重新确认,然后将其设为主要。这修复了我的沙盒应用程序以及Facebook登录不习惯的其他应用程序的帐户。

答案 3 :(得分:5)

新的facebook图表需要在/ me请求中添加范围,如下所示:

/我字段=电子邮件,生日,位置,区域,AGE_RANGE,货币,名字,姓氏,name_format,性别和安培; =的access_token

答案 4 :(得分:4)

我在为我的网站开发fb登录按钮时遇到了同样的问题。我甚至在这里为我的应用设置了权限:

https://developers.facebook.com/apps/<my-app-ID>/permissions

并且它对某些初始案例工作正常,也就是说,它正在发送电子邮件(我在自己的帐户上测试它并且它正在发送我的电子邮件)。然后它突然开始反映没有电子邮件。经过两个小时的浏览,我发现访问令牌存在问题,就像我访问此链接一样:

https://developers.facebook.com/tools/explorer/<your-fb-id>/?method=GET&path=100002451127858%3Ffields%3Did%2Cemail

使用您的ID更新您的-fb-id并转到上面的链接。点击“获取访问令牌”。在打开的选项卡中,单击“扩展权限”,然后选择“电子邮件”并提交。现在,再次测试您的查询。它肯定会在控制台和您的网站上运行。干杯! :)

答案 5 :(得分:1)

这是一个已知的错误。如果用户没有将任何电子邮件地址设置为primary,则查询将为电子邮件返回null。将您帐户的电子邮件地址设置为主要https://www.facebook.com/settings?tab=account&section=email&view,然后尝试。

来源:https://developers.facebook.com/bugs/298946933534016/