我正在通过Facebook阅读用户信息,如下所示:
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $secret,
'cookie' => true
));
$fb_user = $facebook->getUser();
$user_data = $facebook->api('/me');
这适用于绝大多数用户,但对于少数用户而言,facebook不会返回我需要的所有数据。对他们来说,它返回 像往常一样 $ user_data ['first_name'] 和 $ user_data ['last_name'] ,但 $ user_data ['email'] 为空。
问题并不是说用户首先没有在Facebook上设置电子邮件,因为我知道我注意到问题的用户已经设置了。
它不应该是权限不足,因为在javascript中登录用户时我明确要求范围:'email'(我也确认它确实要求用户提供电子邮件权限)< / p>
FB.login(
function(response) {
if (response.status == 'connected') {
login(); // call to php file in question
}
},
{scope:'email'}
);
我不知道该怎么办。让我最困惑的是它对其他用户来说完美无瑕,因为它表明通常一切都很好。
答案 0 :(得分:0)
有些用户可能已选择让您的应用访问其电子邮件。您的应用应该处理某人拒绝向您的应用授予您请求的权限之一的情况。
撤销权限
人们也可以在登录后随时撤销在Facebook的&gt;界面中授予您应用的权限。重要的是,您的&gt;应用会定期检查已授予哪些权限,尤其是在&gt;启动新版权时平台。我们提供了一些方法,供您检查当前授予您应用的&gt;权限。
答案 1 :(得分:0)
使用$ facebook-&gt; api('/ me?fields = id,picture,name,email');