2011-03-11 56 views
30

這應該是相當普遍的,但不知何故,我不能得到它的工作。我想要做的是從Facebook獲取專輯圖片。我正在一個網站上實施。如何使用Facebook API獲取相冊圖片?

function getAlbumPhotos(){ 
      FB.api('/me/albums', function(resp) { 
       //Log.info('Albums', resp); 
       var ul = document.getElementById('albums'); 
       for (var i=0, l=resp.data.length; i<l; i++){ 
        var 
         album = resp.data[i], 
         li = document.createElement('li'), 
         a = document.createElement('a'); 
        a.innerHTML = album.name; 
        a.href = album.link; 
        li.appendChild(a); 
        ul.appendChild(li); 
       } 
      }); 
     }; 

的RESP返回一個包含指向相冊數據數組,但我想對於每張專輯的圖像源,我看不到任何東西:

我可以使用此代碼拿到專輯我可以在resp數據中使用。數據對象包含指向相冊的鏈接,但不包含單個圖像。

根據facebook文檔,照片是「相冊」相冊。我不確定是什麼意思,但他們的文檔顯示您可以獲得單張照片。

此鏈接:(?)

[http://developers.facebook.com/docs/reference/api/album/][1] 

它顯示了JSON返回鏈接,ID,姓名等...這我能得到。但是,在該頁面的底部是包含照片,評論,圖片的相冊的「連接」。當我點擊照片時,它會顯示包含img src的JSON數據結構。問題是,我怎麼得到這個?它看起來很直接,但我無法實現它的工作。

我試圖

FB.api('/me/photos',function(resp) ... 

FB.api('/me/photo',function(resp) ... 

照片返回任何結果,而照片的回報取消定義。

代碼示例將不勝感激。

回答

47
  1. 第一次調用你的所有專輯(和專輯的ID),從那裏'/me/albums'
  2. 可以拿到相冊圖片(封面)'/'+album.id+'/picture'
  3. 和專輯的照片'/'+album.id+'/photos'
+1

謝謝。完美的作品。 – okysabeni

2
FB.api("/"+albumid+"/photos",function(response){ 
    var photos = response["data"]; 
    document.getElementById("photos_header").innerHTML = "Photos("+photos.length+")"; 
    for(var v=0;v<photos.length;v++) { 
     var image_arr = photos[v]["images"]; 

     var subImages_text1 = "Photo "+(v+1); 

     //this is for the small picture that comes in the second column 
     var subImages_text2 = '<img src="'+image_arr[(image_arr.length-1)]["source"]+'" />'; 

     //this is for the third column, which holds the links other size versions of a picture 
     var subImages_text3 = ""; 

     //gets all the different sizes available for a given image 
     for(var j = 0 ;j<image_arr.length;j++) { 
      subImages_text3 += '<a target="_blank" href="'+image_arr[j]["source"]+'">Photo('+image_arr[j]["width"]+"X"+image_arr[j]["height"]+')</a><br/>'; 
     } 
     addNewRow(subImages_text1,subImages_text2,subImages_text3); 
    } 
}); 
1
 <script src="http://connect.facebook.net/en_US/all.js"></script> 

     <script type="text/javascript"> 
      var loggedIn = false;   

      function loginFacebook() 
      { 
       //initializes the facebook API 
      }   




      function loadAlbums() 
      {    
       FB.init({ 
      appId : '345203265493024', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true // parse XFBML 
       }); 





FB.login(function(response) 
{ 
if (response.authResponse) 
{ 

//Logged in and accepted permissions! 

     document.getElementById("status").innerHTML = "Getting album information from your Facebook profile"; 
       var counter = 0; 

     // Start Normal API 
       FB.api('/me/albums', function(response) 
       { 


        var d=response.data; 



        for (var i=0, l=d.length; i<l; i++) 
        { 
         addOption(response["data"][i].name,response["data"][i].id); 
         counter++; 


        } 
        document.getElementById("status").innerHTML = "There are "+ counter +" albums in your Facebook profile"; 
       }); 


       //end of Normal API 

     document.getElementById("albumBtn").style.visibility="hidden"; 



} 
},{scope:'read_stream,publish_stream,offline_access,user_photos,friends_photos,user_photo_video_tags,friends_photo_video_tags'}); 


      } 

      //Adds a new option into the drop down box 
      function addOption(opText,opVal) 
      { 
       var v = document.getElementById("albumsList");    
       v.innerHTML += '<br/><a href="facebookphotos.aspx?album='+opVal+'&name='+opText+'">'+opText+'</a>';    
      } 

      function init() 
      { 
       var v1 = document.getElementById("albumBtn"); 
       v1.onclick = loadAlbums; 
       // v1.style.visibility= "hidden";    
      } 

      //calls init function once all the resources are loaded 
      window.addEventListener("load",init,true); 
     </script>  


this code works 
+3

歡迎來到SO。發佈代碼時請使用適當的格式。 –

+0

我不明白這個代碼是如何工作的,因爲大括號('{'和'}')不平衡。你在這裏錯過了一些東西。 –

1

您可以使用此API:

$照片= $ facebook-> API('/我字段= albums.limit(50)點域(photos.limit(50)點域(ID,源))');

相關問題