Подтвердить что ты не робот

Как получить изображения альбомов с помощью API facebook?

Это должно быть довольно распространено, но почему-то я не могу заставить его работать. Я бы хотел сделать это, чтобы получить альбомы с facebook. Я реализую это на веб-сайте.

Я могу получить альбомы с помощью этого кода:

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 возвращает массив данных, который содержит ссылки на фотоальбомы. НО мне нужны источники изображений для каждого альбома, и я не вижу ничего, что мог бы использовать в соответствующих данных. Объект данных содержит ссылку на альбом, но не отдельные изображения.

Согласно документации на facebook, фотографии являются "соединениями" с альбомами. Я не уверен, что значит, но их док показывает, что вы можете получать отдельные фотографии.

Из этой ссылки:

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

он показывает, что json (?) возвращает ссылку, id, имя и т.д., которые я могу получить. Однако в нижней части этой страницы есть "подключения" к альбому, который включает фотографии, комментарии, изображения. Когда я нажимаю на фотографии, он показывает структуру данных JSON, включая img src. Вопрос в том, как мне это получить? Это кажется таким простым, но я не могу заставить его работать.

Я пробовал

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

и

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

фотографии ничего не возвращают, а фото возвращает undefine.

Приветствуются образцы кода.

4b9b3361

Ответ 1

  • С первого звонка вы получаете все альбомы (и идентификаторы альбомов) '/me/albums'
  • оттуда вы можете получить изображение альбома (обложка) '/'+album.id+'/picture'
  • И фотографии альбома '/'+album.id+'/photos'

Ответ 2

вы также можете попробовать

/_ ABLUM_ID_/фотографии

на графике api, т.е.

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

где 12341234 - это идентификатор объекта альбома, который вы хотите получить.

Ответ 3

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

Ответ 4

        <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

Ответ 5

Вы можете использовать этот api:

$photos = $facebook- > api ('/me? fields = albums.limit(50).fields(photos.limit(50).fields(id, source))');