2016-04-24 224 views
-1

我有CodeIigniter 3项目,我有一个博客帖子功能,我想添加一个自动发布到Facebook页面。我已经用我的CodeIgniter 3项目配置了HyBridAuth。此外,我已经验证了我的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在一个页面后定期。

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的帮助。 :)

相关问题