2012-07-04 69 views
0

我正在創建一個Facebook應用程序,我想用封面圖片顯示用戶相冊,我已經嘗試了代碼#1,但它真的很慢,因爲我做了一個Facebook API調用,這使得我的應用程序永遠,所以我正在尋找另一種方法來使api調用一次,並獲得所有的信息,所以我試着用FQL多查詢(代碼#2),但現在我有一個問題因爲如果專輯沒有圖像,它不會返回任何東西,所以請檢查我的代碼,如果您有任何想法我可以做到這一點,我將不勝感激;)感謝所有提前!我怎樣才能得到來自用戶的圖像的臉書相冊

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),但現在我有一個問題,因爲如果這張專輯有沒有像它不需額外返回任何結果

真的不能在那裏看到你的問題。如果我使用Graph API瀏覽器嘗試您的查詢,它會爲我提供我的所有專輯,併爲每個專輯提供封面照片。 (所以這是我的4張專輯和3張照片。)

如果您無法辨別哪張照片來自哪張專輯 - 那麼只需在兩個查詢中都包含aid字段。

實在是很慢,因爲我做的,這使得在foreach Facebook的API調用我的應用程序採取永遠

當然有,是因每個API調用意味着另一個HTTP請求,而這些都是

如果FQL方法沒有給你你想要的東西,那麼把你的API請求變成batch requests - 這樣可以減少HTTP請求的數量,因此應該可以很快地提高速度。

+0

感謝您的回覆!但我怎樣才能顯示每張專輯的圖像與專輯的名稱?對不起,如果這是一個非常愚蠢的問題,但我正在學習Facebook API @CBroe –