使用批处理请求检索页面的选项卡

时间:2011-09-07 15:06:35

标签: php facebook api facebook-graph-api

我正在拼命尝试使用批量请求(使用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中的一个错误,但也许有人找到了解决方法。

感谢有人可以帮助我!

编辑:

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

是否有人知道如何在单个请求中从粉丝页面获取所有标签?

2 个答案:

答案 0 :(得分:1)

假设您已登录并且手头有一个访问令牌来查看这里的页面,那么您应该在继续前进之前尝试一下:

// 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);

对于您需要的“批量”请求,您可以为上述代码添加循环并获得创意。

答案 1 :(得分:0)

感谢您对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');