簡體   English   中英

在PHP SDK中使用批處理請求獲取Facebook專輯封面

[英]Using Batch request in PHP SDK to get Facebook Album Covers

我正在通過批處理請求使用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');

我知道有另一種使用URL /{albumID}/picture?type=small ,如此處所示但是我仍然無法獲得封面上顯示的facebook相同的圖像大小(我嘗試過thumbnailsmallcover ),並且當我在對所有專輯的批量請求中使用這種方法時,我似乎沒有任何辦法將響應與專輯ID相關聯。 我得到的響應是帶有圖像位置的重定向狀態302。

我也不想直接將圖片鏈接放在/{albumID}/picture?type=small ,因為如果有25張相冊,則意味着25張圖片重定向,這會使頁面變慢。

最后,我cover_photo是使用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對象以及有關封面照片的所有信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM