Graph returned an error: (#200) Permissions error

Graph returned an error: (#200) Permissions error

当我将 post 发布到我的页面时,它工作正常,但是当我 post 通过设置页面 ID 而不是 "me" 进行分页时, 响应如下: 图返回错误:(#200)权限错误 源码如下:

require_once 'src/Facebook/autoload.php';

//*
$config = array();
$config['appId'] = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_id'] = $config['appId'];
$config['secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_secret'] = $config['secret'];
define('APP_ID', $config['appId']);
define('APP_SECRET', $config['secret']);
//$config['fileUpload'] = false; // optional
$config['default_graph_version'] = 'v2.5'; 
$config['page_id']  =   'xxxxxxxxxxxxxxxxxxxxxxxx';  

$config['facebook']['permissions'] = array(
  'email',
  'user_location',
  'user_birthday',
  'publish_actions',
  'publish_pages',
  'manage_pages',
  'public_profile',
);

$fb = new Facebook\Facebook($config);




if(isset($_SESSION['fb_access_token'])) {
    $accessToken = $_SESSION['fb_access_token'];

} else {

    $helper = $fb->getRedirectLoginHelper();
    try {
        $accessToken = $helper->getAccessToken();

        if(isset($accessToken)) {
            $oAuth2Client = $fb->getOAuth2Client();

            // longlived access token
            if (!$accessToken->isLongLived()) {
                $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); 
            }
        }

    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    }
}



if(isset($accessToken)) {
    // Logged in!
    $_SESSION['fb_access_token'] = (string) $accessToken;

    try {
        $response = $fb->get('/'.$config['page_id'].'/feed', $accessToken);

    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        echo 'Graph returned an error: ' . $e->getMessage();
        //exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        //exit;
    } 
} else {
    $helper = $fb->getRedirectLoginHelper();

    $redirect_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $loginUrl = $helper->getLoginUrl($redirect_url, [ 'manage_pages', 'publish_pages', 'publish_actions' ]);
    echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}





on other action in same page 


$page_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';







// instance
$fb = new Facebook\Facebook([
    'app_id'     => APP_ID,
    'app_secret' => APP_SECRET,
    'default_graph_version' => 'v2.4',
]);

$linkData = [
  'link' => encodeurl(array('page'=>'page','lang'=>'ar','id'=>$_id,'beg'=>0,'unuse'=>$xtitlex)),
  'message' => $xtitlex,
  'source' => $publish,//$fb->fileToUpload($publish),
  'caption' => DOMAIN_,
  "picture" => $publish,
  "name" => $xtitlex,
  "description" => $xdescriptionx
 ];



try {
    //
    $response = $fb->post('/'.$config['page_id'].'/feed', $linkData, $page_access_token);

} catch(Facebook\Exceptions\FacebookResponseException $e) {
    //print_r($linkData);
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}
?>

很可能您没有使用具有正确权限的页面令牌。确保您使用的是页面令牌而不是用户令牌,并确保它包含 publish_pages。您可以在调试器中测试您的令牌:https://developers.facebook.com/tools/debug/

确保显示页面 ID 和 publish_pages 权限。

我的应用类型是商业应用,我只是添加了给定列表中的所有权限,在我添加所有权限后,Facebook 要求我审查权限,我只是一直点击确定,一切正常,错误出现了

首先检查您使用的访问令牌是否生成为“页面访问令牌”而不是“用户令牌”。这有点棘手,花了我一点时间。

  1. 转到“https://developers.facebook.com/tools/explorer/”
  2. 下拉“用户令牌”菜单
  3. 选择“页面访问令牌”
  4. 蓝色按钮“生成访问令牌”
  5. 复制并使用新令牌

每次添加或删除权限时,令牌都会更改!

截图