2012-07-04 6 views
0

Я создаю приложение facebook, и я хочу отображать альбомы пользователей с обложкой, я попытался с кодом №1, но это действительно очень медленно, поскольку я делаю facebook api call в foreach, который заставляет мое приложение работать навсегда, поэтому я ищу еще один способ сделать вызов api только один раз и получить всю информацию, поэтому я попытался с помощью многопроцессорного запроса FQL (код # 2), но теперь у меня проблема потому что, если у альбома нет изображения, он ничего не вернет, поэтому, пожалуйста, проверьте мои коды, и если у вас есть идея, как я могу это сделать, я буду очень благодарен за это;) спасибо за все заранее!Как я могу получить альбомы facebook с изображениями от пользователей

code#1 
$albums = $facebook->api('/me/albums?limit=0&fields=id,name,count,cover_photo'); 
foreach($albums['data'] as $album) 
       { 
       // get all photos for album 
       $photos = $facebook->api("/{$album['id']}/?fields=picture,name,count"); 
       $foto = $photos['picture']; 
       $nombre = $album['name']; 

       $id = $album['id']; 
       $count = $album['count']; 
       $cover_photo = $album['cover_photo']; 
       $nombre = $nombre." (".$count.")"; 


       echo "<li> <a href=\"album.php?numero_album=$id&nombre_album=$nombre \" title=\"$nombre\"><img src=\"https://graph.facebook.com/{$cover_photo}/\" alt=\"$nombre\" /> </a> </li>"; 
       } 


code#2 
$multiQuery = '{ 
    "albumes":"SELECT name,cover_pid,object_id,size FROM album WHERE owner=me()", 
    "portadas":"SELECT src_big FROM photo WHERE pid IN (SELECT cover_pid FROM #albumes)" 
     }'; 

     $param = array(  
    'method' => 'fql.multiquery',  
    'queries' => $multiQuery,  
    'callback' => '');  
     $queryresults = $facebook->api($param); 

       foreach($queryresults[0]['fql_result_set'] as $album) 
       { 
       $nombre = $album['name']; 
       $id = $album['object_id']; 
       $count = $album['size']; 
       $nombre = $nombre." (".$count.")"; 


       echo "<li> <a href=\"album.php?numero_album=$id&nombre_album=$nombre \" title=\"$nombre\"><img src=\"https://graph.facebook.com/{$cover_photo}/\" alt=\"$nombre\" /> </a> </li>"; 
       } 

ответ

0

поэтому я попытался с FQL нескольких запросов (код # 2), но теперь у меня есть проблема, потому что, если альбом не имеет изображения он won't не возвращать ничего

не могу см. вашу проблему. Если я попробую ваши запросы с помощью API-интерфейса Graph API, он даст мне все мои альбомы и обложку для каждого из них. (Итак, это 4 альбома и 3 фотографии для меня.)

Если у вас возникли проблемы с тем, какая фотография из какого альбома - тогда просто укажите поле aid в обоих запросах.

это действительно очень медленно, как я сделать facebook апи вызов в Еогеасп, что делает мое приложение принять навсегда

Конечно, это делает, потому что каждый вызов API означает еще один запрос HTTP, и те slow.

Если метод FQL не дает вам то, что вы хотите, тогда сделайте ваши запросы API в batch requests - что уменьшает количество HTTP-запросов, и для этого нужно ускорить работу.

+0

Спасибо за ответ! но как я могу отображать изображения каждого альбома с именем альбома? извините, если это действительно глупый вопрос, но я изучаю API Facebook @CBroe –

Смежные вопросы