Facebook GetMutualFriends方法失败没有明确的原因

时间:2011-09-04 19:43:33

标签: facebook api rest

我有一个在网页上运行的应用程序,它有一个facebook id列表,并通过它们检查所记录的用户是否与列表中的id有共同的朋友;为了使这个验证我正在使用Rest API与friends.getMutualFriends metond,我正在使用这种方法,因为这样我可以得到共同的朋友,而无需对两个用户进行身份验证,我只需要对origin userid进行身份验证,在FQL或使用Graph API的情况下,两个用户都应该连接起来以便我可以得到共同的朋友,这就是为什么getMutualFriends方法在这种情况下如此有用。我遇到的问题是,当我尝试为有很多朋友的用户拉共同的朋友时,我会收到此错误

  

“error_code”:18,     “error_msg”:“由于资源限制,无法完成此API调用”,

如果我试着用一个内容较少的用户来做那个就行了,我知道说的很少或很多都是非常准确的,所以,让我们来看看这个例子,如果我尝试执行这个与有300个朋友的用户通话,这个电话会有效,但是如果我尝试与有700个朋友的用户做同样的事情,它会返回我上面提到的错误,所以我认为它可能是每秒的通话量,所以我限制,但它没有用,我尝试重置应用程序键,我尝试过几个不同的用户,我试图用一个新的应用程序,即使我只是尝试拨打一个电话来比较2个用户,如果用户有很多朋友,它将会失败,我正在使用的代码是

function getMutualFriends($facebook, $uid1, $uid2)
{
    try
    {
        $param  =   array(
            'method'  => 'friends.getMutualFriends',
            'source_uid'    => $uid1,
            'target_uid'  => $uid2,
            'callback'=> ''
            );
        $mutualFriends   =   $facebook->api($param);
        return $mutualFriends;

    }

    catch(Exception $o)
    {
              return serialize($o);
    }

    return null;
}

function getMutualFriendInfo($facebook, $uid1, $uid2)
{

    $mutualfriends=getMutualFriends($facebook, $uid1, $uid2);
    if (is_array($mutualfriends))//!=''))
    {
        $friend_uids = implode(",",$mutualfriends);
        try
        {
            $param = array(
                'method' => 'users.getInfo',
                'uids' => $friend_uids,
                'fields' => 'name,pic_square,pic_big',
                'callback' => ''
                );
            $friend_info = $facebook->api($param);
            return $friend_info;
        }
        catch (Exception $o)
        {
             return serialize($o);
        }
    }
    return serialize($mutualfriends);
}

所以我的问题是,有什么我在这个问题上做错了以致它失败了吗?除了friends.GetMutualFriends方法之外,还有其他方法吗?我已经尝试过这个SELECT uid1 FROM friend WHERE uid2=[targetID] AND uid1 IN (SELECT uid2 FROM friend WHERE uid1=[sourceID]),但它没有用。这个错误有没有特定的起源?

我很困惑因为它适用于某些用户并且不适用于其他用户,我搜索了是否有任何api限制但我没有找到任何内容,API仪表板上没有错误,这个代码似乎以前工作,如果我在facebook上的测试控制台上执行调用,我将得到相同的错误,

感谢您的帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

首先你应该从旧的api api迁移到新的图形api ....因为facebook将很快淘汰旧的api api。 其次尝试此查询

SELECT uid1 FROM friend WHERE uid2='your user id'

我希望它会起作用

答案 1 :(得分:0)

Facebook上报告了一个错误。

http://bugs.developers.facebook.net/show_bug.cgi?id=15644