Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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 获取用户';通过facebookapi庆祝生日_Php_Javascript_Facebook - Fatal编程技术网

Php 获取用户';通过facebookapi庆祝生日

Php 获取用户';通过facebookapi庆祝生日,php,javascript,facebook,Php,Javascript,Facebook,我在使用Facebook API时遇到了一些问题,我正在通过Javascript请求对用户的某些信息的许可: FB.login(function (response) { if (response.authResponse) { // authorized } else { // canceled } }, {scope: 'email,user_birthday,user_location'}); 现在我想通过PHP获取用户的信息(当用

我在使用Facebook API时遇到了一些问题,我正在通过Javascript请求对用户的某些信息的许可:

FB.login(function (response) {
    if (response.authResponse) {
        // authorized
    } else {
        // canceled
    }
}, {scope: 'email,user_birthday,user_location'});
现在我想通过PHP获取用户的信息(当用户获得授权时):

所有这些都工作得很好,只是API没有把用户的生日还给用户。即使我将生日隐私设置设置为public,它也不会显示

因此:


有人知道如何解决这个问题吗?

您是在客户端登录的,但php是在服务器端执行的,因此您只接收用户对象的基本信息

如果您在服务器端登录并拥有,那么您只需通过以下方式即可获得生日:

echo $facebookUser['birthday'];
如果您想在服务器端获取FB信息,为什么不使用服务器端身份验证


如果您同意客户端身份验证,上述功能应该可以使用。

很可能您没有从FB获得请求用户生日的批准

除非FB审查你的FB应用程序,否则你无法获得用户的生日

仅可请求以下权限而无需审阅:
public\u profile
user\u friends
email
(见:)


没有审查,你只能要求
年龄范围
,但不能要求
用户的生日

,虽然这不能回答他的问题。嗯,有点像。由于他没有使用PHPSDK,而是自己发出一个简单的HTTP请求,因此不会传递任何访问令牌。因此,他要么自己将令牌从客户端传递到服务器端,要么从cookie中读取令牌,然后自己将其附加到请求URL中,要么使用SDK,SDK本身就可以很好地处理所有这些问题。我已经尝试过了,但该密钥不存在。看来我没有权限看。虽然我正在请求它…但我正在将信息保存到数据库中,不想再进行额外的AJAX调用。这就是为什么我在服务器端使用它。我尝试过你的想法,但是
响应。执行回调时,user\u birth
未定义。我有类似的问题。有趣的是,在我第一次尝试时,我确实得到了生日,但在随后的尝试中没有得到相同的用户。我查看了隐私设置,看到了那个应用程序。有幸看到我的生日,所以这不是问题。
echo $facebookUser['birthday']; // Gives an error, since this key does not exists
echo $facebookUser['birthday'];
FB.login(function (response) {
    var user_birthday = response.user_birthday; 
    console.log(user_birthday);
if (response.authResponse) {

} else {
    // canceled
}
}, {scope: 'email,user_birthday,user_location'});