2013-02-23 2 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'); 

내가 here을 표시하지만 난 여전히 같은 이미지를 얻을 수 없습니다로 URL /{albumID}/picture?type=small을 사용하여 다른 방법이 있다는 것을 알고는 페이스 북 (나는 thumbnail, small, cover 시도) 커버에 표시 크기, 그리고 때를 모든 앨범에 대한 일괄 요청에서이 방법을 사용하십시오. 응답을 앨범 ID와 상관시키는 방법이없는 것 같습니다. 이에 대한 응답으로 이미지의 위치가있는 리디렉션 상태 302입니다.

이미지 링크가 직접 /{albumID}/picture?type=small 인 것을 원하지 않습니다. 25 개의 앨범이있는 경우 25 개의 이미지 리디렉션이 발생하여 페이지가 느려지기 때문입니다.

+0

잘 작동합니까? 나는 이것을 사용해야한다. – Piyuesh

+0

예. 이 문제를 해결하기 위해 작성한 코드를 게시했습니다. – jbx

답변

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']]; 
} 

는 표지 사진에 대한 모든 정보와 함께 cover_photo_obj 객체를 참조하여 각각의 앨범에 추가 필드와 연관 배열의 $albums[] 배열 각이다.

+0

고마워, 나는 그걸 해결했다 ..... – Piyuesh

+0

색인을 사용하여 동일한 foreach 루프에서 표지 사진을 설정할 수 있습니다. 예제 foreach ($ batchResponse as $ i => $ cover_photo_resp) – foxybagga