を返さない私は、次のコードをしている:FacebookのグラフAPIは、電子メール
$のmetaData:
[
"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
$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);
上記の出力には、以下のとおりです。:
array:3 [
"first_name" => "John"
"last_name" => "Smith"
"id" => "102...",
]
ご覧のとおり、$metaData
のscopes
には、明らかにemail
があるため、許可の問題ではありません。それにもかかわらず、グラフのユーザは時々にメールを持っていません。
どうしてこの問題を解決できますか?
APIは確認済みのメールアドレスのみを返します。また、これに影響を与える可能性のあるプライバシー設定など、他にもさまざまな要因があります。したがって、APIから電子メールアドレスを取得するためにアプリを書く必要はありません。彼らがモバイルだけでサインアップしていれば、多くのユーザーはFacebookにファイルを持っていない。 – CBroe