Автоматическая публикация на странице facebook в качестве администратора страницы с помощью sdk4 (graph api)

#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', '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."amp;redirect_uri=".urlencode($this->fb_redirect)."amp;client_secret=".$this->fb_secret."amp;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'
                )
  

))-> выполнить()-> getGraphObject()-> asArray();
}

Я надеюсь, что кто-нибудь сможет мне помочь :), я прочитал 4-5 тем, но большинство из них есть в предыдущем sdk :/

Заранее спасибо за вашу помощь.

Ответ №1:

Вы используете токен доступа пользователя с вызовом /{page-id}/feed , поэтому сообщение публикуется от имени пользователя.

Для публикации от имени самой страницы вы должны использовать токен доступа к странице. Чтобы получить токен доступа к странице, manage_pages сначала добавьте разрешение в область входа, а затем выполните вызов-

 /{page-id}?fields=access_token
  

это даст вам токен доступа к странице. Чтобы использовать этот токен с /{page-id}/feed вызовом, просто передайте дополнительный параметр access_token с другими параметрами.

Комментарии:

1. Спасибо за вашу помощь, но я не понимаю, что мне нужно делать :/ Я должен заменить «/ XXXXXXXX /feed» на «/{page-id}?fields=access_token» в $response (куда я отправляю данные на свою страницу) или раньше? И если это раньше, где я должен это сделать? Еще раз спасибо

2. Лол. В вызове /XXXXXXXX/feed просто используйте дополнительный параметр access_token и присвоите ему значение page access token . И я уже объяснил page access token , как это сделать, вот и все!

3. хорошо, значит, это что-то вроде этого: /1452962478282387/feed? поля = acces_token ? Где я заменяю acces_token на мой?

4.Где я сказал fields=access_token ? Я не знаю, почему, но вы действительно смущены этой супер простой вещью. Я просто сказал добавить параметр, подобный name caption etc…

5. Боже! Я совершенно потерялся: (у вас есть примерная строка запроса? :/