Facebook最相互的朋友

时间:2012-08-15 15:28:32

标签: facebook facebook-fql

我正在努力寻找与我最友好的朋友。

public function topThreeMutualFriends() {
    $count;
    $query='select uid1 from friend where uid1 in (select uid2 from friend where uid1=me()) and uid2 in (Select uid2 from friend where uid1=me()) and uid1!=uid2';
    $result = $this->api(array('query' => $query , 'method' => 'fql.query'));
    if(!$result)
        throw new exception("No Mutual Friends");
    else{
        foreach ($result as $uid)
            $count[$uid['uid1']]++;
        arsort($count, SORT_NUMERIC);
        $i=0;
        foreach($count as $key=>$uid){
            $topthree[$i++]=$key;
            if($i==3)break;
        }
    return array($topthree,$count);}
    }

在上面的代码中,引发了一个异常,指出:“由于资源限制,无法完成此API调用” 我尝试提供所有权限,并且查询在fql测试器中正常工作。 可能的原因是什么?

2 个答案:

答案 0 :(得分:4)

这是非常复杂的代码。为什么不让FQL找到最友好的三个朋友呢?

$query = 'SELECT uid, name, mutual_friend_count 
          FROM user WHERE uid IN 
            (SELECT uid1 FROM friend WHERE uid2 = me()) 
          ORDER BY mutual_friend_count DESC LIMIT 3'; 

答案 1 :(得分:1)

可能的原因是您粘贴的错误消息,您的查询在Facebook方面需要的资源方面过于昂贵。

将其分解为较小的查询,然后执行此操作。例如,在一次调用中获取朋友列表,将列表拆分为较小的块,并在单独的调用中检查批次的共同朋友计数。

相关问题