【问题标题】:PHP Facebook API - cannot obtain birthday from APIPHP Facebook API - 无法从 API 获取生日
【发布时间】:2012-08-30 01:15:02
【问题描述】:

我有一个基于此验证码的非常简单的 Facebook 应用:

$session = $facebook->getUser();

if (!$session) {
    $url = $facebook->getLoginUrl(array(
               'canvas' => 1,
               'fbconnect' => 0,
               'scope' => 'publish_stream, email, user_activities, user_birthday, user_hometown'
               //'req_perms' => 'publish_stream,email,user_location,user_birthday,user_hometown'
           ));
    echo "<script type='text/javascript'>top.location.href = 'FB_URL';</script>";
} else {
    try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        echo "<script type='text/javascript'>top.location.href = 'FB_URL';</script>";
    exit;
    } 
}

echo "\n === \n";
print_r($uid);
echo "\n === \n";
print_r($me);

输出是:

=== ID_VALUE === Array ( [id] => ID_VALUE [name] => NAME [first_name] => FIRST_NAME [last_name] => LAST_NAME [link] => PROFILE_URL [username] => USERNAME [gender] => male [email] => EMAIL [timezone] => 2 [locale] => en_US [verified] => 1 [updated_time] => 2012-05-16T13:00:04+0000 )

我希望在指定扩展权限user_birthdayuser_hometown 之后,我应该在数组中还包含有关用户生日和家乡的信息......但不幸的是这些信息在那里丢失......

我错过了什么或者我做错了什么?

【问题讨论】:

  • 尝试使用 'birthday' 而不是 'user_birthday' 作为 'scope'

标签: php facebook api facebook-apps


【解决方案1】:

我做了一些调查,

你可以试试这个:$me = $facebook-&gt;api('/me?fields=birthday');

对于范围-您请求权限,它是user_birthday

确保您的$facebook 对象具有access_token

查看并报告,我会尽力提供帮助。

编辑: 我不明白你从哪里得到 FB_URL,因为你在 $url 变量中写了 LoginUrl 我查看了您的代码并建议您尝试这种方式:

if (!$session) {
    $url = $facebook->getLoginUrl(array(
              'redirect_uri' => //SET back to your page or whenever you need
               'scope' => 'publish_stream, email, user_activities, user_birthday, user_hometown'          
           ));
    echo '<script type="text/javascript">top.location.href =' . $url . '</script>';
} else {
    try {           
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        echo $e->getMessage();       
    } 
}

另外验证所有权限的用户访问令牌 获取 $facebook->getAccessToken();并在此处调试 -> Token debugger

【讨论】:

  • $me = $facebook-&gt;api('/me?fields=birthday'); 不幸的是没有帮助我。但是,您能否更具体地了解access_token,例如?谢谢
  • $facebook-&gt;getAccessToken(); 检查返回的内容。
  • 按照我在回答中向您推荐的那样调试此令牌。
  • 谢谢。我已尝试根据您的代码更新我的代码,但仍然相同。我已检查您提供给我的 URL 上的访问令牌,并且该令牌有效。另外,在我的 FB 个人资料中,我设置了我的生日
  • 令牌是否包含范围:user_birthday?
猜你喜欢
  • 2014-04-27
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多