【发布时间】:2017-09-29 23:10:52
【问题描述】:
我有以下代码:
$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,因此这不是权限问题。尽管如此,图用户 sometimes 没有电子邮件(尽管在某些情况下有)。
为什么会这样,我该如何解决这个问题?
【问题讨论】:
-
API 只会返回确认的电子邮件地址。还有许多其他因素,例如隐私设置也会影响这一点。因此,不要编写您的应用程序,使其依赖从 API 获取电子邮件地址。如果仅使用手机注册,许多用户在 Facebook 上没有存档。
-
@CBroe 请写下您的评论作为答案,以便我接受
-
@YahyaUddin,另外,有很多用户实际上是通过手机注册的,他们的帐户上根本没有电子邮件。很老了,可能会对某人有所帮助
标签: facebook facebook-graph-api facebook-php-sdk