2011-03-11 26 views
30

Bu oldukça yaygın olmalı ama bir şekilde işe yaramayacağım. Yapmak istediğim şey facebooktan albüm resimleri almak. Bunu bir web sitesinde uyguluyorum.facebook API kullanarak albüm resimlerini nasıl alabilirim?

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); 
       } 
      }); 
     }; 

solunum fotoğraf albümleri bağlantılar içeren bir veri dizisi döndürür ANCAK ben her albüm için görüntü kaynakları istiyorum ve bir şey görmüyorum:

Bu kodu kullanarak albümleri alabilirsiniz Resp verisinde kullanabilirim. Veri nesnesi, albüme bir bağlantı içerir, ancak tek tek görüntüler içermez.

facebook belgelerine göre, fotoğraflar albümlere "bağlantılar" dır. Ne anlama geldiğinden emin değilim, ancak doktorları bireysel fotoğraflar çekebileceğinizi gösteriyor. Bu bağlantısından

: (?)

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

o json gösterir ben almak mümkün vb linki, id, isim, ... döndürür. Ancak, bu sayfanın alt kısmında fotoğraf, yorum ve resimler içeren albüme "bağlantılar" vardır. Fotoğrafları tıkladığımda, img src de dahil olmak üzere JSON veri yapısını gösterir. Soru şu, bunu nasıl anlarım? Çok basit görünüyor ama işe yaramayacağım.

Ben fotoğraf döner tanımsız fotoğrafların hiçbir şey dönmek
FB.api('/me/photo',function(resp) ... 

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

ve

çalıştı.

Kod örnekleri büyük beğeni toplayacaktır.

ilk Gönderen

cevap

47
  1. tüm albümlerin (ve albüm kimlikleri) albüm resmini alabilirsiniz oradan '/me/albums'
  2. (kapak) '/'+album.id+'/picture'
  3. VE albümün fotoğraflarını almak call '/'+album.id+'/photos'
+1

Teşekkür ederiz. Mükemmel çalışır. – 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'ya hoş geldiniz. Kodu gönderirken lütfen doğru biçimlendirmeyi kullanın. –

+0

Bu kodun parantez ('{' ve '}') dengesi gibi çalışmadığını göremiyorum. Burada bir şey kaçırıyorsun. –

3

da

deneyebilirsiniz

/_ABLUM_ID_/fotoğraf grafik API üzerinde

, yani 12.341.234 sen fotoğraflarını almak istiyorum albüm albüm nesne kimliği olduğunu

https://graph.facebook.com/12341234/photos

.

Bu api kullanabilirsiniz
1

:? Benim/'(

$ fotoğraflar = $ facebook-> api alanları = albums.limit (50) .fields (photos.limit (50) .fields (id, kaynak)) ');

İlgili konular