0

我想將照片發佈到我可以管理的粉絲頁面(作爲正常時間線狀態Feed)。如何使用圖形api將照片發佈到粉絲頁面?

我的應用程序有以下權限:

email,publish_actions,read_stream,manage_pages 

它完美對我自己的時間表。我也可以在頁面的時間線上張貼照片。但爲什麼不從應用程序?

我也搞錯了,認爲 photo_upload 不會起任何作用。也許Facebook已經刪除它。

我的應用使用Facebook PHP-SDK。

如果我試圖將照片上傳到一個粉絲頁面返回我的異常:

Fatal error: Uncaught OAuthException: (#200) Subject does not have permission to post photos on this page thrown 

這裏是我得到了粉絲頁面的訪問令牌:

public function getPageData() 
    { 
     $arRS = $this->facebook->api('/me/accounts'); 

     $pageData = new CFacebookClientPageData(); 
     foreach ($arRS['data'] as $dataSet) 
     { 
      if (array_key_exists('name', $dataSet) && preg_match('/any\s*fan\s*page/i', $dataSet['name'])) 
      { 
       $pageData->sCategory = $dataSet['category']; 
       $pageData->sName = $dataSet['name']; 
       $pageData->sAccessToken = $dataSet['access_token']; 
       $pageData->arPermissions = $dataSet['perms']; 
       $pageData->iPageId = $dataSet['id']; 
      } 
     } 

     return $pageData; 
    } 

這裏是我嘗試將它張貼:

public function uploadPhoto(CFacebookClientPageData $user, CFacebookPhotoData $photo) 
{ 
    return $this->facebook->api('/' . $user->iPageId . '/photos', 
           'POST', 
           array(
             'source' => '@' . realpath($photo->sLocalPath), 
             'message' => $photo->sMessage, 
             'access_token' => $this->sAccessToken 
            ) 
           ); 
} 

在其他一些文件,我這樣稱呼它:

$fb = new CFacebookClient($sAppId, $sSecret); 
$fb->init(); 
$fb->setFileUpload(true); 
$fb->init(); 

$user = $fb->getPageData(); 
$fb->setAccessToken($user->sAccessToken); 
$photo = new CFacebookPhotoData(); 
$photo->sLocalPath = 'E:\php\www\logo.png'; 
$photo->sMimeType = 'image/png'; 
$photo->sMessage = utf8_encode('posted from my fresh app :-)'); 
var_dump($fb->uploadPhoto($user, $photo)); 

編輯:解決了我在下面的評論中提到的問題:我修正了它的代碼片段,但沒有在我的代碼中。

回答

0

我想你不使用的頁面訪問令牌可以在https://developers.facebook.com/docs/graph-api/reference/page/feed/#publish狀態通過

/me/accounts 

該文檔收到您的應用程序在此頁面裏

  • 用戶訪問令牌通過publish_actions權限可以用來代表該用戶發佈新帖子。
  • 具有publish_actions權限的頁面訪問令牌可用於代表該頁面發佈新帖子。
+0

我這樣做,請看我編輯上面。 – alpham8

+0

不應該'access_token'=> $ this-> sAccessToken是'access_token'=> $ user-> sAccessToken – Tobi

+0

那麼你的'setAccessToken'方法是什麼樣的? – CBroe

相關問題