2013-02-23 26 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

相关问题