8

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

我正在使用此 url 在客户端通过 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

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

我做错了什么?

4

1 回答 1

5

根据Facebook 文档

默认情况下,查询时不会返回节点或边中的所有字段。您可以使用“fields”查询参数选择要返回的字段(或边)。这对于使您的 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

祝你好运

于 2015-09-23T06:06:15.693 回答