Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook API返回未完成的数据_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Php Facebook API返回未完成的数据

Php Facebook API返回未完成的数据,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我从Facebook上阅读的用户信息如下: $facebook = new Facebook(array( 'appId' => $appId, 'secret' => $secret, 'cookie' => true )); $fb_user = $facebook->getUser(); $user_data = $facebook->api('/me'); 这对绝大多数用户都有效,但

我从Facebook上阅读的用户信息如下:

$facebook = new Facebook(array(
        'appId'  => $appId,
        'secret' => $secret,
        'cookie' => true
    ));
    $fb_user = $facebook->getUser();
    $user_data = $facebook->api('/me');
这对绝大多数用户都有效,但对少数用户来说,facebook并没有返回我需要的所有数据。对他们来说,它又回来了 $user\u data['first\u name']$user\u data['last\u name']与往常一样,但$user\u data['email']为空

问题并不是说用户最初并没有在facebook上设置电子邮件,因为我知道那个我注意到问题的用户已经设置了

这应该不是权限不足,因为在javascript中,当用户登录时,我会显式地请求作用域:'email'(我还验证了它确实请求用户的电子邮件权限)


我不知道该怎么办。最让我困惑的是,它对其他用户来说是完美无瑕的,因为它表明总体上一切都很好

一些用户可能选择退出,让您的应用程序访问他们的电子邮件。当有人拒绝向你的应用授予你请求的某个权限时,你的应用程序应该能够处理这种情况

撤销的权限

用户还可以在登录后随时在Facebook的>界面中撤销授予您的应用程序的权限。您的>应用程序必须定期检查已授予的权限,特别是在>在新平台上启动时。我们为您提供了检查当前授予应用程序的>权限的方法


使用$facebook->api('/me?fields=id,picture,name,email')

我会测试它,但我怀疑。电子邮件在文档中被标记为默认,大多数用户都会返回。不,在我的情况下它也不会返回,必须手动添加,现在一切正常。测试后告诉我。在文档中它列为“默认值”的位置?由于v2.4需要枚举所有字段,因此只能返回名称和iddefault@SalmanAslam我对它进行了测试,结果没有改变。在我还没有收到邮件之前,我就收到了那些我没有收到的邮件,现在我还没有收到。这很简单。当你的应用请求权限而有人拒绝时,你的应用只能访问用户的公共项目,如果它不是公共的,它将不会获得电子邮件id。感谢feeadback,但我知道情况并非如此。我访问了其中一个有问题的帐户,我已经对此进行了测试。并非所有用户都会在文件中有可访问的电子邮件地址,您确认了吗?@Igy Facebook是否必须可以访问才能返回该地址?我们的一位客户支持代理无法登录我们的网站,因为facebook api没有返回她的电子邮件地址。但是我们知道她在facebook上有电子邮件列表,并且她没有撤销权限。是的,API需要能够访问才能返回它-您的登录流不应该假设电子邮件地址总是可用的,因为有些用户没有地址(有些用户会有一个正在跳转的地址,因此不会返回,等等)
FB.login(
    function(response) {
        if (response.status == 'connected') {
            login(); // call to php file in question
        } 
    }, 
    {scope:'email'}
);