2016-04-24 54 views
-1

私はブログの投稿機能を持っているCodeIigniter 3プロジェクトを持っており、Facebookに自動投稿を追加したいと思います。私は既にCodeIgniter 3プロジェクトでHyBridAuthを設定しました。また、私はすでにFacebookを認証し、Facebookセッションのデータをアクセストークンで保存しました。ページ管理者としてFacebookページに投稿を投稿

今、私は自分の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を保存する必要があります。

$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")次のように

3)次に、あなたのPOSTメソッドで、既存の保存されたセッションに再度ログインする必要があります。ここでget_user_pagesあなたのすべてのページaccess_tokenを取得し、そのページに投稿するaccess_tokenあなたのページの1つを選択することができます。

そして、彼の助けを借りて@luschnに特別な感謝をしたいと思います。 :)

関連する問題