【问题标题】:Can not post on a Facebook page as a admin using graph api php codeigniter无法使用graph api php codeigniter以管理员身份在Facebook页面上发布
【发布时间】:2025-12-17 14:20:03
【问题描述】:

我无法以管理员身份在 facebook 页面上发帖。它给了我这个错误

Exception occured, code: 200 with message: (#200) The user hasn't authorized the application to perform this action

虽然我是页面的管理员,但这里是我的权限。我认为我拥有所需的权限,但我的代码仍然无法正常工作

["permissions"]=>
    object(stdClass)#41 (1) {
      ["data"]=>
      array(5) {
        [0]=>
        object(stdClass)#42 (2) {
          ["permission"]=>
          string(12) "user_friends"
          ["status"]=>
          string(7) "granted"
        }
        [1]=>
        object(stdClass)#43 (2) {
          ["permission"]=>
          string(5) "email"
          ["status"]=>
          string(7) "granted"
        }
        [2]=>
        object(stdClass)#44 (2) {
          ["permission"]=>
          string(12) "manage_pages"
          ["status"]=>
          string(7) "granted"
        }
        [3]=>
        object(stdClass)#45 (2) {
          ["permission"]=>
          string(15) "publish_actions"
          ["status"]=>
          string(7) "granted"
        }
        [4]=>
        object(stdClass)#46 (2) {
          ["permission"]=>
          string(14) "public_profile"
          ["status"]=>
          string(7) "granted"
        }
      } 

这是我的代码

if (isset($session)) {
            $_SESSION['fb_token'] = $session->getToken();
            $session = new FacebookSession($session->getToken());


            $request = new FacebookRequest($session, 'GET', '/me?fields=accounts{access_token,category,name,id,perms},permissions');
            $response = $request->execute();

            $graphObject = $response->getGraphObject()->asArray();
            $fb_data = array(
                'me' => $graphObject,
                'loginUrl' => $helper->getLoginUrl($facebook_default_scope),
           );
            $this->ci->session->set_userdata('fb_data', $fb_data);
            /*Facebook Post*/
                try {
                  $response = (new FacebookRequest(
                    1420447421611683 is $page_id
                    $session, 'POST', '/1420447421611683/feed', array(
                      'access_token'  => $fb_data['me']['accounts']->data[0]->access_token,
                      'link' => 'www.example.com',
                      'message' => 'Whats Up',
                    )
                  ))->execute()->getGraphObject();
                  echo "Posted with id: " . $response->getProperty('id');
                } catch(FacebookRequestException $e) {
                      echo "Exception occured, code: " . $e->getCode();
                      echo " with message: " . $e->getMessage();
                } 
            /*End*/
}

提前致谢

【问题讨论】:

    标签: php facebook codeigniter facebook-graph-api facebook-php-sdk


    【解决方案1】:

    此行为是设计使然。您的访问令牌中缺少权限 publish_pages。另请记住,您应该使用页面访问令牌作为页面发布。

    这里有一些文档提到 publish_pages: https://developers.facebook.com/docs/facebook-login/permissions/v2.3

    【讨论】: