我正在通过批量请求使用PHP SDK(以便更快地获得所有专辑的封面)。它的工作正常,但我得到的图片不是专辑封面,而是各种裁剪尺寸的单张图片。
$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');
我知道有另一种方法可以使用/{albumID}/picture?type=small
所示的网址thumbnail
但我仍然无法获得与封面中显示的相同的图片尺寸(我试过small
, cover
,/{albumID}/picture?type=small
),当我在所有相册的批量请求中使用此方法时,我似乎无法将响应与相册ID相关联。我得到的回应是具有图像位置的重定向状态302。
我不想直接放置图片链接{{1}},因为如果有25张相册,则意味着25张图片重定向,使页面变慢。
答案 0 :(得分:1)
我最后做的是使用cover_photo
ID获取完整的图片信息(包括不同尺寸的图片的网址以及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
对象以及有关封面照片的所有信息。