Facebook Graph 不返回电子邮件

Posted

技术标签:

【中文标题】Facebook Graph 不返回电子邮件【英文标题】:Facebook Graph not returning email 【发布时间】:2013-08-25 15:06:17 【问题描述】:

更新 我的个人电子邮件地址似乎已多年未使用。 Facebook 将其标记为非活动状态,并且未将其作为 JSON 的一部分返回。

我正在使用此网址在客户端通过 Facebook 对用户进行身份验证:

https://www.facebook.com/dialog/oauth?
  client_id=xxx&
  redirect_uri=https://www.facebook.com/connect/login_success.html&
  scope=email

我收到一个代码,然后换取一个令牌:

https://graph.facebook.com/oauth/access_token?
  code=xxx&
  client_id=xxx&
  client_secret=xxx&
  redirect_uri=xxx

然后我将令牌发送到我的服务器并获取 Fb 图表以获取一些用户信息,包括电子邮件。

 https://graph.facebook.com/me?access_token=xxx

出于某种原因,我得到了所有用户的“关于”信息,但没有他/她的电子邮件

我做错了什么?

【问题讨论】:

看这里:***.com/questions/9347104/… 我用自己的facebook账号测试过,我注册的地址已经多年没用了!这很可能是原因。 如果您使用 2.4 版,那么您必须在 fields=... 变量(以及任何其他公共配置文件字段)中请求电子邮件。否则 /me 只会给你名字和 id @PalDev,希望我能在 2020 年浪费半天时间自己解决之前找到你的答案。Facebook 文档仍然很狡猾,他们仍然没有更新说 2020 年就是这种情况(或 2015 年根据您的回答!) 【参考方案1】:

根据Facebook Documentation:

默认情况下,不是节点或边中的所有字段都返回时 进行查询。您可以选择要返回的字段(或边缘) 使用“字段”查询参数。这对制作非常有用 您的 API 调用更高效、更快速。

这从 v2.4 开始有效,(以前的版本检索了一些默认字段)。

当您注册新应用时,您将自动获得(无需人工审核)三个权限:电子邮件、public_profile 和 user_friends。在您的代码中,“电子邮件”在范围内(这很好),所以只需将您的查询更改为:

https://graph.facebook.com/me?access_token=xxx&fields=email

您可能想要在以前版本的 API 中自动获得的 public_profile 字段。这样做,将“public_profile”添加到您的范围:

https://www.facebook.com/dialog/oauth?
  client_id=xxx&
  redirect_uri=https://www.facebook.com/connect/login_success.html&
  scope=email,public_profile

现在将用户名字段添加到您的查询中:

https://graph.facebook.com/me?access_token=xxx&fields=first_name,last_name,gender,email,timezone,age_range,verified

祝你好运

【讨论】:

我也曾经将名称作为一个批次来获取,这使得很难识别具有多个空格的国际名称的名字和姓氏。我按照你的方法获得了分开的名字和姓氏,并考虑分享它以防它帮助某人。 /me?fields=email,first_name,last_name 所有 /me (public_profile) 引用都可以在这里找到developers.facebook.com/docs/facebook-login/…

以上是关于Facebook Graph 不返回电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Graph Request 正在返回名称但不是电子邮件

Facebook Graph API v2.4 不返回扩展用户数据

Facebook Graph API 电子邮件字段出现问题

Facebook graph api v2.4 不返回生日

facebook graph api不返回所有数据

Facebook Graph API,如何获取用户电子邮件?