2010-12-22 64 views
5

我可以創建使用Facebook的圖形API通過發佈數據的專輯上傳圖像到一個特定的Facebook相冊

http://graph.facebook.com/ALBUM_ID/albums 

它返回一個ID,這是不相冊ID。

我證實,它在兩個方面

  1. 通過轉到專輯,援助是比什麼ID我收到
  2. 並通過張貼http://graph.facebook.com/{ALBUM_ID_I_RECIEVED}/photos不同,但照片從未發佈到新創建的相冊,而不是它發佈到默認應用程序相冊。

我需要知道真正的相冊ID,以便我可以上傳圖像到新創建的相冊。

+0

+1 「計算器喜」 - 讓我很快樂! – RabidFire 2010-12-24 08:36:05

回答

9

新的PHP-SDK是工作得很好,我只是測試它,這裏是我的意見:

1.確保你有正確的擴展權限是publish_stream兩個Album創建和Photo上傳。

2.After使用下面的代碼,您會收到相冊ID創建相冊:

$post_data = array(
    'name'=>"My Test Album", 
    'description'=>"My Test Album Desc" 
    ); 
$data['album'] = $this->facebook->api("/me/albums", 'post', $post_data); 

PS:我確認這個ID是不是你看到Facebook的瀏覽

3時的ID 。現在我們需要將圖像與你得到了專輯「參考」 ID上傳:

$file = FCPATH . "assets/img/small1.jpg"; 
$post_data = array(
    "message" => "My photo caption", 
    "source" => '@' . realpath($file) 
); 
$album_id = "473425002142"; 
$data['photo'] = $this->facebook->api("/$album_id/photos", 'post', $post_data); 

PS:恆FCPATH是一個笨不變,你可以在你$_SERVER['DOCUMENT_ROOT']或任何你感到舒服的方法。

而結果:
alt text

2

我實際上面對完全相同的問題,但與事件。 Facebook將不會返回實際的事件ID(在您的情況下是相冊ID),而是返回一個小的偏移量(最多10個)。所以,這裏是你需要遵循的工作流程(爲了使它工作!):

  1. 發佈專輯。將返回的(假的)專輯ID fb_aid保存到您的數據庫中。
  2. 查詢當前FB登錄用戶的所有已發佈專輯。
  3. 循環返回相冊列表。
  4. 通過測試偏移量是否爲<來識別實際相冊ID如下:
  5. 將實際相冊ID保存在數據庫中。

$fbAlbums = $this->facebook->api(array('method' => 'photos.getalbums')); 
$myAlbums = $this->Album->find('all'); 
for ($i = 0; $i < count($fbAlbums); ++$i) {  
    foreach ($myAlbums as $myAlbum) { 
     $aidOffset = abs($fbAlbums[$i]['aid'] - $myAlbum['Album']['fb_aid']); 
     if ($aidOffset != 0  // Prevents fixing an already fixed album id 
      && $aidOffset < 10 // Checks if this is a FB ID Screw up 
      ) { 
      $myAlbum['Album']['fb_aid'] = $fbAlbums[$i]['aid']; 
      $this->Album->save($myAlbum); 
      break; // Little optimization 
     } 
    } 
} 

現在,您的數據庫已經更新了專輯的ID。歡呼!開發者:1. Facebook API:0.

我知道這不是很漂亮。我知道有這麼多潛在的問題。但是,直到Facebook關心足夠的API來修復它之後,它才完成了這項工作。

+0

感謝您的回覆。我會盡快獲得時間。 – 2010-12-24 11:29:48

+0

我認爲你正在使用舊的Rest API,我不確認它是否會對Graph API有所幫助,但即使我會嘗試,因爲我卡住了。 – 2010-12-24 11:31:36

相關問題