我正在尝试将一些请求重写为一个批处理请求
$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。当我通过简单的请求打电话给我时,我会成功地接受它。 有人可以帮助我,告诉我哪里有错误吗?
答案 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个评论和喜欢。不仅如此,这似乎会降低性能并且经常会超时抛出错误,例如“别名不存在”