使用批量请求检索页面的标签

问题描述:

我拼命尝试使用批量请求(使用Facebook PHP SDK)检索页面的标签,但Facebook不断返回相同的错误。这里是我的代码:使用批量请求检索页面的标签

$query = array(
    array('method' => 'GET', 'relative_url' => '/'.$page_id, 'name' => 'get-page'), 
    array('method' => 'GET', 'relative_url' => '/'.$page_id.'/tabs', 'access_token' => '{result=get-page:$.data.0.access_token}')); 

$res = $facebook->api('/?batch=' . json_encode($query), 'POST'); 

而这里的结果:

array 
    'code' => int 403 
    'headers' => 
     array 
      ... 
    'body' => string '{"error":{"type":"OAuthException","message":"(#210) Subject must be a page."}} 

我尝试没有批量要求,以及它工作得很好。我认为它来自Facebook API中的错误,但也许有人找到了解决方法。

谢谢,如果有人能帮助我!

编辑:

因为似乎没有人找到解决这个问题:

有谁知道如何在单个请求中提取所有从一个粉丝页面的标签?

假设你已经登录并拥有在手的访问令牌来这里观看页面的摘录,你应该在继续之前尝试:

// get all the pages   
$pages = $fb->api('/me/accounts'); 
$pages = $pages['data']; 

// assume there is at least one page 
$workpage = $pages[0]; 

// get all the tabs for this page 
$tabs = $fb->api("/{$workpage['id']}/tabs", array('access_token'=>$workpage['access_token'])); 
print_r($tabs); 

至于你所需要的“批”的要求,您可以将循环添加到上述代码并获得创意。

谢谢你的帮助Fakeer!其实我已经尝试了你的解决方案,它工作得很好,但我想限制请求的数量...

最后我发现我的请求出了什么问题。这是正确的版本:

$query = array(
    array('method' => 'GET', 'relative_url' => '/'.$page_id.'?fields=access_token', 'name' => 'get-page'), 
    array('method' => 'GET', 'relative_url' => '/'.$page_id.'/tabs', 'access_token' => '{result=get-page:$.access_token}')); 

$res = $facebook->api('/?batch=' . json_encode($query), 'POST');