3

我想用javascript api在我的網頁上顯示我的臉書相冊中的照片。 我可以用下面的代碼讀取專輯名稱,但是如何才能顯示其中一張專輯的照片?以javascript api顯示來自facebook的照片?

FB.api('/myfacebookid/albums', function(response) { 

    var ul = document.getElementById('albums'); 
    for (var i=0, l=response.data.length; i<l; i++) { 
     var 
     album = response.data[i], 
     li = document.createElement('li'), 
     a = document.createElement('a'); 
     a.innerHTML = album.name; 
     a.href = album.link; 
     li.appendChild(a); 
     ul.appendChild(li); 
    } 
    }); 

任何輸入讚賞,謝謝!

好了,現在我有這樣的代碼來代替:

FB.api('/142461229141170/albums?fields=id,name', function(response) { 
    if (response && response.data && response.data.length){ 
     console.log(response) 

    for (var i=0; i<response.data.length; i++) { 
    var album = response.data[i]; 

    if (album.name == 'Profile Pictures'){ 

     FB.api('/'+album.id+'/photos', function(photos){ 
     if (photos && photos.data && photos.data.length){ 
      for (var j=0; j<photos.data.length; j++){ 
      var photo = photos.data[j]; 
      // photo.picture contain the link to picture 
      var image = document.createElement('img'); 
      image.src = photo.picture; 
      $('#foton').append(image); 
      } 
     } 
     }); 

     break; 
    } 
    } 
    } 
}); 

我猜Im做什麼wrong..still!這是顯示來自Profile Profile相冊的照片,但我必須將其更改爲$('#foton')。append(image); 。如果我看日誌,它會得到4個對象。

如果我更改爲不同的相冊,例如 - Manmade Photos或Cover Photos,它將停止工作。

而且,如果我從上面更改userId(以上是PAGE ID)到我個人的Facebook ID,那麼它也停止工作。

我真的想了解它是如何工作的,因爲我也想在這之後獲得feed和其他一些東西,我猜它的工作方式與此相同?非常感謝,夥計們!

回答

4

您可以使用圖表來做到這一點......您需要的只是上面的album.id,然後您可以撥打圖表來獲取照片。我通過fields=pictures告訴Facebook只返回圖片鏈接。你可以省略這個參數,它會給你帶來一大堆東西。

https://graph.facebook.com/<album.id>/photos?fields=picture 

所有字段的列表可以在這裏Album - Graph API

+0

好吧,我已經在測試圖表瀏覽器: FB.api('/ me/albums?fields = id,name'and FB.api('/'+ album.id +'/ photos')並返回正確的內容 那麼爲什麼Im我明白了錯誤:TypeError:'undefined'不是一個對象(評估'response.data.length'),我簡直不明白? – 2012-03-07 14:09:16

+0

在你的問題中添加一個額外的部分,顯示你正在談論的代碼...什麼是'response.data' – Nix 2012-03-07 15:46:05

8

發現這可以通過執行圖形API請求photos連接album來完成:

FB.api('/me/albums?fields=id,name', function(response) { 
    for (var i=0; i<response.data.length; i++) { 
    var album = response.data[i]; 
    if (album.name == 'Profile Pictures'){ 

     FB.api('/'+album.id+'/photos', function(photos){ 
     if (photos && photos.data && photos.data.length){ 
      for (var j=0; j<photos.data.length; j++){ 
      var photo = photos.data[j]; 
      // photo.picture contain the link to picture 
      var image = document.createElement('img'); 
      image.src = photo.picture; 
      document.body.appendChild(image); 
      } 
     } 
     }); 

     break; 
    } 
    } 
}); 
+0

+1必須把它帶到一個新的水平;) – Nix 2012-03-07 13:20:15

+0

我剛剛有類似的東西近在咫尺,否則最終會出現類似你的答案;) – 2012-03-07 13:24:43

+0

謝謝,Juicy。 我用上面的測試,但我得到一個錯誤: TypeError:'undefined'不是一個對象(評估'response.data.length') – 2012-03-07 13:43:14