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

joa*_*eno 57 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>
Run Code Online (Sandbox Code Playgroud)

有可能锁定你的电子邮件,所以没有人可以拥有它?即使我批准了吗?

Mie*_*ere 38

马库斯的回答让我想到了我面临的真正问题.

使用Facebook Explorer工具调试我能够弄清楚我应该在方法中设置电子邮件范围FB.api().

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'});
Run Code Online (Sandbox Code Playgroud)

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

  • URL和范围"email"上的这些参数对我来说效果很好,谢谢! (2认同)
  • api请求中的?fields = ...,email,...非常重要!! 这是一段时间以前不需要收到电子邮件,只需/我就够了; 显然没有了.我花了好几个小时试图找到这个问题; 非常感谢!! (2认同)

ozb*_*zba 34

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

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

  • @ozba - 你救了我的一天.非常感谢你 :) (2认同)

joa*_*eno 20

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

该问题 的Facebook似乎有时会忘记你的主电子邮件就是在图形API(但它仍然存在的偏好.)

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


Ali*_*van 6

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

/我?场=电子邮件,生日,位置,区域,AGE_RANGE,货币,名字,姓氏,name_format,性别&=的access_token