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 正在返回名称但不是电子邮件