Php 检索页面';使用批处理请求删除选项卡

Php 检索页面';使用批处理请求删除选项卡,php,facebook,api,facebook-graph-api,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

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

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

编辑:

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


有人知道如何在一次请求中从一个风扇页面获取所有选项卡吗?

假设您已登录,并且手头有一个访问令牌,可以查看页面。在继续之前,您应该尝试以下摘录:

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

至于您需要的“批处理”请求,您可以在上述代码中添加循环,并发挥创意。

假设您已登录,并且手头有一个访问令牌,可以查看页面。下面是一个摘录,您应该在继续之前尝试:

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

谢谢你的帮助,法克尔!事实上,我已经尝试过你的解决方案,效果很好,但我想限制请求的数量

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

$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');