64

编辑:不重复,因为:

  • 我有权限
  • 调试令牌
  • 代码适用于测试用户

请不要在未阅读的情况下标记为重复。

我正在尝试获取用户电子邮件地址,但我不明白。在图形 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>

可以锁定您的电子邮件,因此没有人可以拥有它吗?即使我授予许可?

4

6 回答 6

43

马库斯的回答让我明白了我面临的真正问题。

使用 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'});

快速入门指南中的内容不是很清楚,我希望它也对其他人有所帮助。

于 2016-01-25T14:15:13.170 回答
36

我遇到了同样的问题,我想我找到了原因:如果用户在 Facebook 中有一封未经确认的电子邮件(即 Facebook 向他的电子邮件地址发送了一封验证邮件,但他没有回复)Facebook 不会将该电子邮件传递给您的应用即使他给了您电子邮件权限(!!!)。

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

于 2013-12-15T12:36:02.393 回答
21

在我将错误报告标记为重复并阅读了那里的所有帖子和链接后,我了解了导致此问题的原因以及如何解决。

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

解决方案 受影响的用户必须删除电子邮件,保存设置,然后重新添加地址,重新确认,然后将其设为主要地址。这修复了我的沙盒应用程序和其他 Facebook 登录无法正常工作的应用程序上的帐户。

于 2013-10-18T12:50:44.967 回答
7

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

/me?fields=电子邮件、生日、位置、语言环境、年龄范围、货币、名字、姓氏、姓名格式、性别和访问令牌=

于 2017-01-18T09:28:26.423 回答
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 更新 your-fb-id 并转到上面的链接。单击“获取访问令牌”。在打开的选项卡中,单击“扩展权限”,然后选择“电子邮件”并提交。现在,再次测试您的查询。它肯定会在控制台和您的网站上工作。干杯! :)

于 2013-11-01T09:58:17.057 回答
2

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

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

于 2013-06-13T19:23:43.477 回答