2016-04-24 3 views
-1

У меня есть проект CodeIigniter 3, где у меня есть функциональность постов в блогах, и я хотел бы добавить авто сообщение на страницу Facebook. Я уже настроил HyBridAuth с моим проектом CodeIgniter 3. Кроме того, я уже аутентифицировал свой Facebook и сохранил данные сеанса Facebook с токеном доступа.Опубликовать сообщение на странице facebook как страница admin

Теперь, я пытаюсь опубликовать на моей странице facebook. Я создал следующий метод.

public function facebook_post() { 
    if ($this->ion_auth->logged_in()) { 
     $this->data['userInformation'] = $this->ion_auth->user()->row(); 
    } 
    $this->data['userid'] = $this->data['userInformation']->id; 
    $this->data["facebook_status"] = $this->admin_model->getStoredHybridSession($this->data['userid'], "Facebook"); 

    if(!empty($this->data['facebook_status'][0])) { 
     if($this->data["facebook_status"] != "0") { 
      $this->data["facebook_profile"] = $this->get_profile("Facebook"); 
      $access_token = explode('&', $this->data['facebook_profile']->coverInfoURL); 
      $a_t = explode('=', $access_token[1]); 

      $params = array(
       "access_token" => $a_t[1], 
       "message" => "Here is a blog post about auto posting on Facebook using PHP", 
       "link" => "http://facebook.com", 
       "picture" => "https://i.telegraph.co.uk/multimedia/archive/03474/Facebook_3474124b.jpg", 
       "name" => "Auto post functionality test", 
       "caption" => "https://facebook.com", 
       "description" => "Automatically post on Facebook with PHP using Facebook PHP SDK. How to create a Facebook app. Obtain and extend Facebook access tokens. Cron automation." 
      ); 
      $facebook = $this->hybridauthlib->authenticate("Facebook"); 
      $ret = $facebook->api()->api('/1388840631445245/feed', 'POST', $params); 
      owndebugger('Successfully posted to Facebook'); 
     } 
    } else { 
     $this->data["facebook_profile"] = 0; 
    } 
} 

Этот код работает. Но, мой пост, отправляемый на страницу в качестве посетителей.

Что я делаю неправильно?

+0

без проверки кода, вы скорее всего используете токен пользователя вместо токена страницы. – luschn

+0

@luschn - токен страницы? :(Мне кажется, это очень новые термины. Как мне это получить? –

+1

http://www.devils-heaven.com/facebook-access-tokens/ – luschn

ответ

0

Я успешно прошел. :)

Опубликовать на странице следующая информация необходима для рассмотрения.

1) Область применения: publish_pages, publish_actions, manage_pages

2) Вы должны хранить долгоживущие access_token размещать регулярной основе в странице.

3) Затем вы должны снова войти в систему с существующей сохраненной сессии в методе пост следующим образом:

$this->data["facebook_profile"] = $this->get_user_pages("Facebook"); 
    $params = array(
    "access_token" => $this->data['facebook_profile'][0]['access_token'], 
    "message" => $this->input->post('posttitle'), 
    "link" => base_url() . "news/" . $this->results, 
    "picture" => base_url() . "uploads/posts/".(isset($profilephoto['file_name']) ? $profilephoto['file_name'] : $pp), 
    "name" => "Stack Overflow", 
    "caption" => "http://stackoverflow.com", 
    "description" => $this->input->post('postcontent') 
    ); 
// post on a single page of my pages 
    $facebook = $this->hybridauthlib->authenticate("Facebook"); 
    $facebook->api()->api("/221320344636/feed", 'POST', $params); 

4) $this->get_user_pages("Facebook"). Здесь get_user_pages извлекает все ваши страницы access_token, а затем вы можете выбрать access_token одну из своих страниц для публикации на этой странице.

И я хотел бы поблагодарить @luschn за его помощь. :)

Смежные вопросы