【发布时间】:2011-11-17 04:09:39
【问题描述】:
我正在尝试使用 Graph API 和 PHP+JS SDK 来获取一个人的好友列表,然后出去获取好友列表中每个人的共同好友。我可以轻松获得好友列表,因为它只是一个简单的 API 调用。然而,当试图获得所有共同的朋友时,问题就出现了。假设一个人有 500 个朋友,那么一次运行应用程序需要 501 次不同的 API 调用,这实在是太多了。
很好。
下一个想法。批处理所有这些 API 调用并将 501 变为 25。这似乎是个好主意,这就是我所做的。不幸的是,它没有用。这是我的代码:
KK NVM,我已修复(大部分)。它仍然运行得很慢。这是新代码:
$userFriends = $facebook->api('/me/friends', 'GET');
$queries = array();
$mutual_friends = array();
foreach ($userFriends[data] as $v1) {
$queries[] = array('method' => 'GET', 'relative_url' => '/me/mutualfriends/'.$v1[id]);
if (count($queries)==20){
$batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST');
foreach (range(0,count($queries)-1) as $n) {
$mutual_friend[] = json_decode($batchResponse[$n]['body'], true);
}
$queries = array();
}
$batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST');
foreach (range(0,count($queries)-1) as $n) {
$mutual_friend[] = json_decode($batchResponse[$n]['body'], true);
}
}
我偷偷怀疑你不应该像这样批量 API 调用,但我可能是错的。另外,我读到 FQL 实际上是获取此类/大量信息的更好、首选方法,但这意味着我也需要访问其他人的朋友列表。
我能想到的唯一其他解决方案是限制调用,但我真的不想这样做,因为我不希望应用程序运行缓慢或等待时间过长。
我正在尝试做的事情可能吗?我会以错误的方式去做吗?任何输入或专业知识将不胜感激。
【问题讨论】:
标签: php facebook facebook-graph-api facebook-fql facebook-php-sdk