2013-02-23 80 views
1

我通過批量請求使用PHP SDK(以便更快地獲得所有相冊的封面)。它的工作正常,但我得到的圖片不是專輯封面,而是各種裁剪尺寸的單張圖片。在PHP SDK中使用批量請求獲取Facebook相冊封面

$albums_resp = $facebook->api('/'.$fbid.'/albums','GET'); 
$albums = $albums_resp['data']; 

//prepare batch query for album covers 
$queries = array();  
foreach ($albums as $album) 
{ 
    if ($album['cover_photo'] != null) 
    { 
     $query = array('method' => 'GET', 'relative_url' => $album['cover_photo']); 
     array_push($queries, $query); 
    } 
} 

$queries_str = json_encode($queries); 
$batchResponse = $facebook->api('?batch='.$queries_str, 'POST'); 

我知道,還有另一種方法,通過使用URL /{albumID}/picture?type=small指示here,但我仍然不能得到相同的圖像尺寸Facebook的顯示蓋(我試過thumbnailsmallcover),當我在所有相冊的批量請求中使用這種方法,我似乎沒有任何方法將響應與相冊ID相關聯。我得到的迴應是圖像位置的重定向狀態302。

我不想直接將圖片鏈接/{albumID}/picture?type=small或者因爲如果有25個相冊,這意味着25圖像重定向,使頁面變慢。

+0

現在工作正常嗎?我需要使用這個。 – Piyuesh 2013-04-26 12:40:24

+0

是的。剛剛發佈了我爲解決此問題而構建的代碼。 – jbx 2013-04-26 23:35:03

回答

1

我最終做的是使用cover_photo ID來獲取完整圖像信息(包括圖像的URL大小以及ID本身),並將其與相冊的封面照片ID相關聯。

$cover_photos = array(); 
foreach ($batchResponse as $cover_photo_resp) 
{ 
    if ($cover_photo_resp['code'] == 200) 
    { 
     $cover_photo = json_decode($cover_photo_resp['body'], true);  
     $cover_photos[$cover_photo['id']] = $cover_photo; 
    } 
} 

//correlate the cover photos with the respective albums, according to the cover photo ID 
for ($i = 0; $i < count($albums); $i++) 
{ 
    $albums[$i]['cover_photo_obj'] = $cover_photos[$albums[$i]['cover_photo']]; 
} 

你到底最終是什麼$albums[]陣列關聯數組的每個在每張專輯指cover_photo_obj對象與所有有關的封面照片信息的額外字段。

+0

非常感謝,我解決了這個問題..... – Piyuesh 2013-04-27 03:35:13

+0

您可以使用索引在同一個foreach循環中設置封面照片。示例foreach($ batchResponse as $ i => $ cover_photo_resp) – foxybagga 2013-07-20 20:35:49