Facebook Graph API 不返回电子邮件

标签 facebook facebook-graph-api facebook-php-sdk

我有以下代码:

$fb = new Facebook([
    'app_id' => $appId,
    'app_secret' => $appSecret,
    'default_graph_version' => 'v2.9',
]);

$oAuth2Client = $fb->getOAuth2Client();
$tokenMetaData = $oAuth2Client->debugToken($accessToken);
dump($tokenMetaData);

$graphUser = $fb->get('/me?fields=first_name,last_name,email', $accessToken)->getGraphUser()->asArray();
dump($graphUser);

上面的输出如下:

$元数据:

 [
   "app_id" => "..."
   "application" => "My App Name"
   "expires_at" => "2017-07-01 11:40:09.000000"
   "is_valid" => true
   "issued_at" => "2017-05-02 11:40:09.000000"
   "metadata" => array:2 [
     "auth_type" => "rerequest"
     "sso" => "ios"
    ]
    "scopes" => array:2 [
      0 => "email"
      1 => "public_profile"
    ]
    "user_id" => "102..."
  ]
}

$graphUser:

array:3 [
  "first_name" => "John"
  "last_name" => "Smith"
  "id" => "102...",
]

如您所见,$metaData 中的 scopes 显然有 email,因此这不是权限问题。尽管如此,图形用户有时 没有电子邮件(尽管在某些情况下有)。

这是为什么,我该如何解决这个问题?

最佳答案

将您需要的字段添加到请求的 URL 中:

https://graph.facebook.com/me?fields=email,name

关于Facebook Graph API 不返回电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737695/

相关文章:

php - 跳过 Facebook 身份验证时,我不应该取回一个适当的值来指示用户的决定吗?

Facebook FXBML 自昨天以来未呈现(IFRAME Canvas )

javascript - 在 Meteor 中登录并注册 Facebook 时出现问题

php - FQL 错误 102 需要用户 session 进行重复查询

css - 需要 FB 评论框滚动*在*我的位置 :fixed global navigation bar

facebook - 如何可视化 Facebook 帖子

facebook-graph-api - Facebook 应用 : post to page now failing with "An unknown error has occurred"/OAuthException

java - 将 Facebook 帖子 ID 从 String 转换为 int

php - 每次都请求 facebook 权限

authorization - FB.login 返回无效的 OAuth 访问 token