简体   繁体   中英

display photos from facebook with javascript api?

I want to display photos from one of my facebook albums on my webpage with the javascript api. I can read the album names with the below code, but how can I then display the photos of one of the albums?

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

Any input appreciated, thanks!

OK, now I have this code instead:

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

I guess Im doing something wrong..still! This is displaying the photos from the Profile Pictures album but I had to change it to $('#foton').append(image); . If I look at the log it gets 4 objects.

If I change to a different album eg - Manmade Photos or Cover Photos it stops working.

And also if I change the userId from above(the above is a PAGE id) to my personal facebook id then it stops working aswell.

Im really trying to understand how this works, because I also want to get the feed and some other stuff after this, and I guess that it works the same way as this? Thanks a lot, guys!

This can be done by issuing Graph API request to photos connection of 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;
    }
  }
});

You use the graph to do it... all you need is the album.id from above, and then you make a call to the graph to get the photos. I passed fields=pictures to tell facebook to only return the picture links. You can omit this parameter and it will bring you a whole bunch of stuff back.

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

The list of all of the fields can be found here Album - Graph API

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM