Php 使用sdk4(图形api)在facebook页面上以页面管理员身份自动发布

Php 使用sdk4(图形api)在facebook页面上以页面管理员身份自动发布,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,我试图通过一个网站以页面管理员的身份发布到我的facebook页面。但我可以用我的个人账户来做 这是我的代码: private $fb_api; private $fb_secret; private $fb_redirect = 'index.php/admin/ajout_actualite'; private $fb_helper; private $fb_scopes = array(/*'publish_actions', 'email', */'create_event', 'm

我试图通过一个网站以页面管理员的身份发布到我的facebook页面。但我可以用我的个人账户来做

这是我的代码:

private $fb_api;
private $fb_secret;
private $fb_redirect = 'index.php/admin/ajout_actualite';
private $fb_helper;
private $fb_scopes   = array(/*'publish_actions', 'email', */'create_event', 'manage_pages', 'publish_stream');
private $fb_session;


$data = $this->config->item('facebook')['key'];

$this->fb_redirect = base_url($this->fb_redirect);



    $this->fb_api       = $this->config->item('facebook')['key'];
    $this->fb_secret    = $this->config->item('facebook')['secret'];
    FacebookSession::setDefaultApplication($this->config->item('facebook')['key'], $this->config->item('facebook')['secret']);

    $this->fb_helper = new FacebookRedirectLoginHelper($this->fb_redirect);   
    if ( $this->session->userdata('access_token') ) {
        $this->fb_session = new FacebookSession( $this->session->userdata('access_token') );
        // Validate the access_token to make sure it's still valid
        try {
            if ( ! $this->fb_session->validate() ) {
                $this->fb_session = false;
            }
        } catch ( Exception $e ) {
            // Catch any exceptions
            $this->fb_session = false;
        }
    }
这就是我在页面上发布的方式:

$loginUrl = $this->fb_helper->getLoginUrl($this->fb_scopes);       

    if($this->input->get('code') != null) {
        $s = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=".$this->fb_api."&redirect_uri=".urlencode($this->fb_redirect)."&client_secret=".$this->fb_secret."&code=".$this->input->get('code'));      

        $s = parse_str($s, $out);//var_dump($s);
        $this->session->set_userdata(array("access_token" => $out['access_token']));
    }else if($this->session->userdata('access_token') == NULL) {
        redirect($loginUrl);
    }

    if($this->fb_session != null){

    $response = (new FacebookRequest(
            $this->fb_session, 'POST', '/XXXXXXXX/feed', array(
                'name' => 'This is drop da bit',
                'caption' => "I love you baby",
                'link' => 'http://lesjoiesducode.fr/',
                'message' => 'Unicorn 1 - 0 Facebook'
                )
))->execute()->getGraphObject()->asArray(); }

我希望有人能帮助我:),我已经阅读了4-5个主题,但在以前的sdk中有大多数主题:/


提前感谢您的帮助。

您正在通过调用
/{page id}/feed
使用用户访问令牌,这就是代表用户发布帖子的原因

要以页面本身的名义发布,您必须使用。要获取页面访问令牌,请先将权限
manage\u pages
添加到登录范围,然后调用-

/{page-id}?fields=access_token

这将为您提供页面访问令牌。要将此令牌与
/{page id}/feed
调用一起使用,只需通过其他参数传递一个附加参数
access_令牌

感谢您的帮助,但我不明白我必须做什么:/i必须在$response(将数据发送到我的页面)或之前将“/xxxxxxx/feed”替换为“/{page id}?fields=access_token”?如果是以前,我该怎么做?再次谢谢你,洛尔。在调用
/XXXXXXXX/feed
中,只需使用一个附加参数
access\u token
,并为其指定
页面访问token
的值。我已经解释了如何获取这个
页面访问令牌
,就是这样!是这样的:/14529624782387/feed?fields=acces\u令牌?我在哪里用我的acces\U令牌替换了acces\U令牌?我在哪里说过
fields=access\U令牌
?我不知道为什么,但你真的对这个超级简单的东西感到困惑。我刚才说添加一个参数,就像
name
caption
等等……天哪!我完全迷路了:(你有请求的例句吗?:/