(#200)用户没有足够的管理权限在此页上执行此操作


(#200) User does not have sufficient administrative permission for this action on this page

经过5天的尝试和失败,我已经非常接近我想要做的了。

有一个例外。我当前的代码只工作一次。

这里是场景,

我正在尝试使用facebook sdk Add A Page Tab到facebook页面。

我当前的代码以某种方式工作,但它只适用于在facebook中创建的第一个facebook页面,如果我尝试为其他页面添加页面选项卡,它将抛出以下错误:

(#200) User does not have sufficient administrative permission for this action on this page

我不明白为什么会这样。这个错误通常意味着我没有页面访问令牌,但如果是这种情况,我的代码不会/不应该为第一页工作,但它确实!

有没有可能有人可以看看我当前的代码,看看我做错了什么?

任何帮助都将是感激的。

我的当前代码如下:

这是获取访问令牌的部分,也是在表单提交之后:

// Set Extended Access Token


if (isset($code)) {

$fb->setExtendedAccessToken();
//Get access short live access token
$accessToken = $fb->getAccessToken();
// Exchange token
$fb->api('/oauth/access_token', 'POST',
array(  
    'grant_type' => 'fb_exchange_token',           
    'client_id' => $appId ,
    'client_secret' => $secret,
    'fb_exchange_token' => $accessToken
    )
    );
        $token_url="https://graph.facebook.com/oauth/access_token?client_id=" .  $appId 
        . "&client_secret=" . $secret 
        . "&code=" . $code 
        . "&redirect_uri=" . $returnurl;

    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $user_access_token = $params['access_token'];
    $attachment_1 = array(
    'access_token' => $user_access_token
);
}
$result = $fb->api("/me/accounts", $attachment_1);
    foreach($result["data"] as $page) {
        if($page["page_id"] == $page_id) {
            $page_access_token = $page["access_token"];
            //echo $page_access_token;
            break;
        }
    }

        //$pageIds=$fb->api('/me/accounts');
        //$pageAccessToken=$pageIds["data"][1]["access_token"];



        if(isset($_POST['msg']) and $_POST['msg']!=''){
        try{
        $message = array(
                'access_token' => $page_access_token,
                'message' => $_POST['msg']
            );
            $posturl = '/'.$_POST['pageid'].'/feed';
            $posturl2 = '/'.$_POST['pageid'].'/tabs';

            $fb->api($posturl2, 'POST', array(
           'app_id'=>'0000000000000000000000000',
           'access_token'=>$page_access_token

));
        $result = $fb->api($posturl,'POST', $message);
        if($result){

            echo 'Successfully posted to Facebook Wall...';
        }
    }catch(FacebookApiException $e){
        echo $e->getMessage();
    }
}

,这是我如何在我的页面内的表单中填充用户页面:

if(empty($pages)){
            echo 'The user does not have any pages.';
        }else{
            echo '<form action="" method="post">';
            echo 'Select Page: <select name="pageid">';
            echo '<option value="">Select A Page</option>';
            foreach($pages as $page){
                echo '<option value="'.$page['page_id'].'">'.$page['name'].'</option>';
            }
            echo '</select>';

            //echo 'Select Page: <select name="pageid2">';
           // foreach($pageIds as $pageId){
               // echo '<option value="'.$page['page_id'].'">'.$pageAccessToken.'</option>';
           // }
            //echo '</select>';

            echo '<br />Message: <textarea name="msg"></textarea>';
            echo '<br /><input type="submit" value="Post to wall" />';
            echo '</form>';
        }
    }catch(FacebookApiException $e){
        echo $e->getMessage();
    }

我只是有相同的错误消息与实时API订阅。我认为这是同样的问题,你没有管理权限的页面。如果你是版主(例如),你仍然可以得到一个页面令牌,但某些事情是不可能的,如果你不是管理员(订阅实时API,添加一个选项卡)。