修改:不重复,因为:
请勿在未经阅读的情况下将其标记为重复。
我正在尝试获取用户的电子邮件地址,但我没有得到它。在图形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>
可以锁定您的电子邮件,因此没有人可以拥有它?即使我批准了吗?
答案 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§ion=email&view,然后尝试。