Ответ 1
- С первого звонка вы получаете все альбомы (и идентификаторы альбомов)
'/me/albums'
- оттуда вы можете получить изображение альбома (обложка)
'/'+album.id+'/picture'
- И фотографии альбома
'/'+album.id+'/photos'
Это должно быть довольно распространено, но почему-то я не могу заставить его работать. Я бы хотел сделать это, чтобы получить альбомы с 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.
Приветствуются образцы кода.
'/me/albums'
'/'+album.id+'/picture'
'/'+album.id+'/photos'
вы также можете попробовать
/_ ABLUM_ID_/фотографии
на графике api, т.е.
https://graph.facebook.com/12341234/photos
где 12341234 - это идентификатор объекта альбома, который вы хотите получить.
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);
}
});
<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
Вы можете использовать этот api:
$photos = $facebook- > api ('/me? fields = albums.limit(50).fields(photos.limit(50).fields(id, source))');