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

时间:2014-07-10 18:02:11

标签: php

经过5天的试验和错误后,我非常接近我想做的事情。

有一个例外。我目前的代码只能使用一次。

这是方案,

我正在尝试使用facebook sdk {facebook}页面Add A Page Tab

我当前的代码以某种方式工作,但它只适用于在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();
    }

1 个答案:

答案 0 :(得分:1)

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