通过图形API获取所有朋友的生日信息的最简单方法?

时间:2011-02-21 07:41:12

标签: php facebook facebook-graph-api

我正在寻找通过给定用户对象ID获取所有朋友的生日信息的资源最少的方法。可能使用事件对象,因为朋友的生日在事件中是可见的。

2 个答案:

答案 0 :(得分:6)

我通过以下方式做了类似的事情:

1)像Awais所指出的那样 - 您需要在登录时首先获得用户的扩展许可才能访问他们的生日信息

<fb:login-button perm="user_birthday, friends_birthday"></fb:login-button>

2)有不同的方法可以做到这一点,但是如果你没有使用php sdk,你可以按照以下方式获得朋友生日

all_friends_profile = json_decode(file_get_contents('https://api.facebook.com/method/fql.query?query=select+uid,name,birthday_date+from+user+where+uid+in+(select+uid2+from+friend+where+uid1%3Dme())&format=json&access_token=...'));

foreach($all_friends_profile as $profile)
{
   echo $profile->name.' birthay='.$profile->birthday_date;                  
}

只需替换上述代码中的访问令牌,它就应该遍历所有朋友并打印他们的生日

3)基本上我使用的查询是

select uid,name,birthday_date from user where uid in (select uid2 from friend where uid1=me())
祝你好运

答案 1 :(得分:1)

非常简单。只需获取用户生日的扩展权限,然后只需查询用户表即可获得生日

<fb:login-button perm="user_birthday, friends_birthday"></fb:login-button>
$user=json_decode(file_get_contents('https://graph.facebook.com/me/friends?access_token='.$cookie['access_token']));
foreach($user[data] as $friend)
{
    $fql    =   "select name, birthday_date from user where uid=".$friend['id'];
    $param  =   array(
                'method'    => 'fql.query',
                'query'     => $fql,
                'callback'  => ''
            );
            $fqlResult   =   $facebook->api($param);


    print_r($fqlResult);

希望它能运作