2013-10-02 34 views
0

我一直在嘗試在頁面Feed上發佈消息和圖片。我一直收到錯誤消息Facebook api PHP:發佈到其他用戶頁面Feed不起作用

(#1)創建共享時發生錯誤。

只有當其他人試圖發佈時纔會發生這種情況。如果我,該頁面的所有者試圖發佈它是成功的。

所以我的問題是:是否有可能發佈到其他用戶頁面供稿?

我已經做了大量的研究,但我似乎找不到合理的解決方案。

這裏是我使用發佈消息的代碼:

<?php 

class Photo_contest_helper extends Facebook 
{ 
    private $_key = '***********'; 
    private $_secret = '***************'; 

    private $_page_id = '387228561388254'; 

    public $fb_login_url; 
    public $fb_logout_url; 

    public $image_id; 

    public function init() 
    { 
     $this->connect(); 

     $image_id = $this->save_image(); 

     if(!!$image_id) { 
      $this->image_id = $image_id; 
      $this->push_to_facebook($image_id); 
     } 
    } 

    public function save_image() 
    { 
     $image_id = NULL; 

     if (!!$_POST[ "image" ] || !!$_FILES) { 
      $image_id = Image_helper::save_one($_POST[ "image" ]); 
     } 

     return $image_id; 
    } 

    public function push_to_facebook($image_id) 
    { 
     $access_token = $this->get_page_access_token(); 

     $this->publish_photo($access_token); 
    } 

    public function connect() 
    { 
     parent::__Construct(array('appId' => $this->_key, 'secret' => $this->_secret)); 

     $user = $this->getUser(); 

     if(!$user) { 
      $this->fb_login_url = $this->getLoginUrl(array('scope' => 'manage_pages,publish_actions,publish_stream,status_update')); 
     } 
     else { 
      $this->fb_logout_url = $this->getLogoutUrl(array('next' => 'http://stormtest.co.uk/' . DIRECTORY . "home/logout")); 
     } 
    } 

    public function get_page_access_token() 
    { 
     $accounts = $this->api('/me/accounts', 'get'); 
     $access_token = NULL; 

     foreach ($accounts[ 'data' ] as $account) { 
      if ($account[ 'id' ] == $this->_page_id) { 
       $access_token = $account[ 'access_token' ]; 
      } 
     } 

     return $access_token; 
    } 

    public function publish_photo($access_token = "") 
    { 

     $params = array('message' => 'Competition entry', 
         'link' => 'http://stormtest.co.uk/' . DIRECTORY . '_admin/assets/uploads/images/' . $this->get_image(), 
         'caption' => 'This is my competition entry', 
         'picture' => 'http://stormtest.co.uk/' . DIRECTORY . '_admin/assets/uploads/images/' . $this->get_image()); 

     if(!!$access_token) { 
      $params[ 'access_token' ] = $access_token; 
     } 


     try { 
      $this->api('/' . $this->_page_id . '/feed', 'post', $params); 
     } 
     catch(FacebookApiException $e) { 
      die(print_r($e)); 
     } 
    } 

    public function get_image() 
    { 
     $image_model = new Image_model(); 
     $image_model->find($this->image_id); 

     return $image_model->attributes[ 'imgname' ]; 
    } 
} 

?> 

在此先感謝。

+3

您不能通過API發佈到其他用戶的牆上。唯一的可能性是使用Feed/Share對話框,從而讓活動用戶自己觸發帖子。 (_「我對此做了很多研究」_ ...我很難相信這一點。) – CBroe

+0

感謝您的澄清 –

回答

0

您應該使用JavaScript SDK將內容共享到頁面。通過API發佈別人的牆壁已被禁用:

FB.ui({ 
    method: 'feed', 
    to: '387228561388254', 
    name: "Facebook API: Tracking Shares using the JavaScript SDK", 
    link: "https://www.webniraj.com/2013/05/11/facebook-api-tracking-shares-using-the-javascript-sdk/", 
    picture: "https://stackexchange.com/users/flair/557969.png", 
    caption: "Tracking Facebook Shares on your website or application is a useful way of seeing how popular your articles are with your readers. In order to tracking Shares, you must used the Facebook JavaScript SDK." 
}, callback); 

使用to場在上面的代碼來設置PAGE_ID,並相應地更改其他屬性(但不改變method)。

相關問題