我有一个在网页上运行的应用程序,它有一个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上的测试控制台上执行调用,我将得到相同的错误,
感谢您的帮助,我们将不胜感激。
答案 0 :(得分:0)
首先你应该从旧的api api迁移到新的图形api ....因为facebook将很快淘汰旧的api api。 其次尝试此查询
SELECT uid1 FROM friend WHERE uid2='your user id'
我希望它会起作用
答案 1 :(得分:0)
Facebook上报告了一个错误。