我正在尝试为我的网络应用程序构建Facebook登录,但我无法检索已记录的个人资料电子邮件。我尝试使用不同的帐户进行测试,但没有一个能够返回个人资料电子邮件,并且所有个人资料都在Facebook上注册了有效的电子邮件。当我被重定向到Facebook登录页面时,该框要求正确分享电子邮件地址,但我仍然没有收到电子邮件!
这里获取登录网址
$helper = $fb->getRedirectLoginHelper();
$permissions = array('email', 'user_likes');
$loginUrl = $helper->getLoginUrl('url', $permissions);
这里是回调代码:
$APPID = 'appid';
$APPSecret = 'appsecret';
$fb = new \Facebook\Facebook([
'app_id' => $APPID,
'app_secret' => $APPSecret,
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getRedirectLoginHelper();
if($accessToken){
$fb->setDefaultAccessToken($accessToken);
$response = $fb->get('/me?fields=email');
$userNode = $response->getGraphUser();
var_dump($userNode);
echo $userNode->getProperty('email');
}
结果:
object(Facebook\GraphNodes\GraphUser)#66 (1) { ["items":protected]=> array(1) { ["id"]=> string(15) "........" } }
使用此代码,我只能获取用户的ID或名称,从请求网址中删除?fieds=email
我做错了什么?
答案 0 :(得分:0)
您是否尝试从网页上获取所有电子邮件? 或者使用您申请的人的电子邮件??
答案 1 :(得分:0)
将 / me?fields = email 更改为 / {user-id}?fields = email < / p>
或
检查您的许可是否正确
更新1:
你的请求网址就像这样做
https://graph.facebook.com/v2.5/ {User-ID的字段} = email和安培; =的access_token {接入令牌}
答案 2 :(得分:0)
我明白了。 有时,Facebook不会发回用户的电子邮件。当用户未验证电子邮件时,它会附加。当它发生时,您可以只显示电子邮件的表单。