无法通过Facebook获得用户的生日

时间:2010-05-05 08:05:42

标签: php facebook

我一直试图通过Facebook Connect获得Facebook用户的生日,但我还没有成功。相同的代码以前工作过,并且仍然适用于之前制作的其他网站(旧的),但似乎不再起作用。这是代码:

require_once ('./connect/facebook.php');

$facebook = new Facebook("myapi", "mysecret");
$fbuser = $facebook->get_loggedin_user();

if ($fbuser)
{
    $_SESSION['custid'] = $fbuser;

    $fb_look_fields = array(
                            'name', 
                            'first_name', 
                            'last_name', 
                            'name', 
                            'timezone', 
                            'name', 
                            'sex', 
                            'birthday',
                            'birthday_date',
                            'current_location', 
                            'proxied_email',
                            'affiliations'
                            );

    try
    {
        $user_data = $facebook->api_client->users_getInfo($fbuser, $fb_look_fields);
    }
    catch (Exception $e)
    {
         echo $e->getMessage();
    }

    # for birth date
    $fb_birthday = $user_data[0]['birthday'];

    if (!$fb_birthday)
    {
        $fql_result_xml = $facebook->api_client->fql_query("SELECT birthday FROM standard_user_info WHERE uid = " . $fbuser);
        $fb_birthday = $fql_result_xml['birthday'];
    }

    echo $fb_birthday;

即使我将生日设置为对所有人可见,生日也始终为空。

  • 我正在使用新的Facebook PHP客户端
  • 我甚至尝试从标准表中获取信息但没有任何运气

Facebook是否再次​​更改了他们的API /政策?或者我在代码中错过了什么/没有正确地做什么?

3 个答案:

答案 0 :(得分:2)

他们已经改变了(再次)。为Connect构建Login按钮时,您可以请求生日权限,例如:

文档说:“一旦用户授权您的网站,您就可以从用户的个人资料中获取这些字段......”

http://developers.facebook.com/docs/guides/web#login

答案 1 :(得分:2)

Facebook目前作为扩展许可获得了生日。你允许生日延长许可吗?在用户批准生日延长许可之前,您无法找回他的生日。

答案 2 :(得分:1)

我通过离线standard_user_info查询access_token.表取得了一些成功但是我找不到日期格式的文档。我得到的日期就像“1999年3月4日”。