Facebook批量请求

时间:2011-11-01 17:54:44

标签: facebook facebook-graph-api batch-file request

我正在尝试将一些请求重写为一个批处理请求

$posts = $facebook->api('/me/feed?limit=9999999');

for($i = 0; $i < count($posts['data']); $i++)
{

  $comments = $facebook->api($posts['data'][$i]['id'].'/comments');
  $likes = $facebook->api($posts['data'][$i]['id'].'/likes');

}

进入

$batch = array();

$req = array(
    'method'       => 'GET',
    "name" => "prispevky",
    'relative_url' => '/me/feed',
);

$batch[] = json_encode($req);


$req = array(
    'method'       => 'GET',
    'relative_url' => '{result=prispevky:$.data.*.from.id}/comments'
);

$batch[] = json_encode($req);

$req = array(
    'method'       => 'GET',
    'relative_url' => '{result=prispevky:$.data.*.id}/likes'
);

$batch[] = json_encode($req);        

$params = array(
    'batch' => '[' . implode(',',$batch) . ']'
);

try 
{
  $info = $facebook->api('/','POST',$params);
  print_r($info);  
} 
catch(FacebookApiException $e) {
    error_log($e);
    $info = null;
}

但我收到错误404您请求的某些别名不存在,然后列出墙上所有Feed的ID。当我通过简单的请求打电话给我时,我会成功地接受它。 有人可以帮助我,告诉我哪里有错误吗?

1 个答案:

答案 0 :(得分:3)

Henry尝试使用循环到$ Comments&amp; $喜欢
“这将从帖子数据0返回评论和喜欢。对于除此之外的每个帖子,你必须添加一个新数组。我看到你是如何尝试循环数组请求,我从来没有能够使该方法工作,因为评论和喜欢存在于一个单独的表中,可以这么说。“

注意:批量只接受最多20个请求,因此请求999999个帖子循环仍然只返回前19个评论/喜欢,因为第一个请求是帖子。


$queryProfileFeed = array(
        array('method' => 'GET', 'relative_url' => '/me/feed?fields=id%26'.$app_access_token.'' 'name' => 'getLnC', 'omit_response_on_success' => false),    
        array('method' => 'GET', 'relative_url' => '/{result=getLnC:$.data.0.id}/comments?fields=id%26offset=0'),
        array('method' => 'GET', 'relative_url' => '/{result=getLnC:$.data.0.id}/likes?fields=id%26offset=0'),
);
$batchResponse = $facebook->api('?batch='.json_encode($queryProfileFeed), 'POST');
        /* json decode response for comments */
    $Comments = json_decode($batchResponse[1]['body'], true);
        /* json decode response for likes */
    $Likes = json_decode($batchResponse[2]['body'], true);

我使用上面的方法,但有很多批量请求在我的插件中显示我的墙

但我只要求前10个帖子中的前2个评论和喜欢。不仅如此,这似乎会降低性能并且经常会超时抛出错误,例如“别名不存在”