【问题标题】:Getting user's birthday through Facebook API通过 Facebook API 获取用户的生日
【发布时间】:2012-07-18 07:31:28
【问题描述】:

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

FB.login(function (response) {
    if (response.authResponse) {
        // authorized
    } else {
        // canceled
    }
}, {scope: 'email,user_birthday,user_location'});

现在我想通过 PHP 获取用户的信息(当他被授权时):

$facebookUser = json_decode(file_get_contents('https://graph.facebook.com/' . $this->data['userid'] . '?access_token=' . $this->oathtoken . '&fields=id,name,location,gender,email,picture,birthday,link'));

一切都很好,除了 API 没有返回用户的生日。即使我将生日隐私设置设为公开,它也不会显示。

所以:

echo $facebookUser['birthday']; // Gives an error, since this key does not exists

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

【问题讨论】:

  • 我也有类似的问题。有趣的是,我第一次尝试时,我确实得到了生日,但在同一用户的后续尝试中却没有。我查看了隐私设置并查看了该应用程序。有幸看到我的生日,所以这不是问题。

标签: php javascript facebook


【解决方案1】:

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

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

echo $facebookUser['birthday'];

【讨论】:

  • 但这并不能回答他的问题。
  • 嗯,确实如此。由于他没有使用 PHP SDK,而是自己发出一个简单的 HTTP 请求,因此没有传递访问令牌。所以他要么必须自己将令牌从客户端传递到服务器端,要么从 cookie 中读取它,然后自己将其附加到请求 URL 中——或者使用 SDK,它应该自己处理所有这些问题相当不错。
  • 我试过了,但是那个键不存在。所以看来我没有查看它的权限。虽然我要求...
【解决方案2】:

很可能您没有获得从 FB 请求 user_birthday 的批准。

除非 FB 审查您的 FB 应用,否则您无法获得 user_birthday

仅可以请求以下权限而无需审核:public_profileuser_friendsemail (见:https://developers.facebook.com/docs/facebook-login/review/what-is-login-review

未经审核,您只能请求age_range,但不能请求user_birthday

【讨论】:

    【解决方案3】:
    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'});
    

    如果您想在服务器端获取 FB 信息,为什么不使用服务器端身份验证?

    如果您对客户端身份验证没问题,以上应该可以工作。

    【讨论】:

    • 我正在将信息保存在数据库中,并且不想进行额外的 AJAX 调用。这就是我在服务器端使用它的原因。我试过你的想法,但是执行回调时response.user_birthdayundefined
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多