通过facebook api获取两个Facebook ID之间的关系(朋友,朋友的朋友)

时间:2012-02-28 11:06:08

标签: facebook facebook-graph-api facebook-fql facebook-php-sdk facebook-friends

如何检查两个facebook ID之间的关系。即朋友,朋友的朋友或没有关系。通过fql或graph api方法(任何东西)。

我知道如何获得朋友列表,facebook id的共同朋友。但我想要一个适当的方法,可以给出两个Facebook ID之间的关系。我搜索了很多但没有得到与我的问题相关的任何内容。

2 个答案:

答案 0 :(得分:1)

 SELECT uid2 FROM friend WHERE uid1 = me() AND uid2 = {YOUR_FRIEND2_ID}

使用此FQL查询,您可以检查ID是否是当前登录用户的朋友。如果给定的用户不是朋友,它将返回一个空数组。 Facebook不会给你朋友的朋友,所以你不能超越登录用户。

  

阅读您需要的朋友表   任何有效的access_token来检索当前会话用户的朋友

     

这是唯一可以查询此表的用户,无法检索朋友的朋友。

Facebook offical documentation on friend FQL table

答案 1 :(得分:1)

我通过检查fql查询得到了解决方案。

//$target_id=id of user to check relationship
//$source_id=logged in user

    $query="SELECT uid, name, work FROM user WHERE uid IN 
    (SELECT uid2 FROM friend WHERE uid1 = $target_id AND uid2=$source_id)
     ORDER BY name";

    $user_info=$this->facebook->api(array('method'=>'fql.query',
                                'query'=>$query));


    if(!empty($user_info)) 
    {
          $degree='friend';
    }
    else {
        $query="SELECT uid, name, work FROM user WHERE uid IN 
       (SELECT uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM friend WHERE uid1 = $target_id) AND uid2=$source_id) 
        ORDER BY name";

       $user_info=$this->facebook->api(array('method'=>'fql.query',
                                    'query'=>$query));

    // we can check friend-of-friend for app user friends

       if(!empty($user_info)) {
           $degree='friend-of-friend'; 
       }
    else{
    $degree='none';
    }
    }

如果有人知道任何简单的方法,请回答。