使用Facebook api获取专辑封面
Getting albums covers with facebook api
我正在尝试通过JavaScript和Graph API从Facebook获取专辑列表。我是这样做的:
FB.api('/me/albums', function(response){
//
});
专辑封面以照片ID的形式返回,而不是我可以插入到html中的URL。所以,我需要在第二步中获取一个网址。但是,通过应用程序设计,我以后无法获取 url 并插入图像。我需要返回一个完整的数据对象,其中包含专辑属性(ID、名称、封面 URL)。下面列出了我的最后一次尝试:
FB.api('/me/albums', { fields : 'id,name,count,cover_photo' }, function(response){
if (!response || response.error) {
callback.call(false);
return;
};
var parsed = $(response.data).map(function(){
if (this.count > 0) {
var result = {
aid : this.id,
title : this.name,
cover : this.cover_photo
};
return result;
};
});
for (var i = 0; i < parsed.length; i++) {
(function(i){
FB.api('/' + parsed[i].cover, { type : 'album' }, function(response){
parsed[i].thumb = response.picture;
});
})(i);
};
callback.call(parsed);
});
问题是循环没有等待封面查询并继续前进,返回对象没有封面 URL。我认为这不可能那么难做到,但我找不到足够长的解决方案。欢迎任何想法。
window.getAlbums = function() {
FB.api({
method: 'fql.multiquery',
queries: {
query1: 'select aid,name,link,photo_count,cover_object_id from album where owner = me()',
query2: 'SELECT pid,src FROM photo WHERE object_id IN (SELECT cover_object_id FROM #query1)'
}
},
function(response) {
var parsed = new Array();
$(response[0].fql_result_set).each(function(index,value){
var result = {
aid : value.aid,
title : value.name,
cover : response[1].fql_result_set[index].src,
link :value.link
};
parsed.push(result);
})
getdata(parsed);
});
};
使用 应用您的相册详细信息
function getdata(data){
$(data).each(function(index,value){
// console.log(value.aid + ' - '+ value.cover+ ' - '+ value.title );
$("#fb_albumb").append('<h3>'+ value.title +'</h3><a href="'+ value.link +'" target="_blank" ><img src="'+ value.cover +'" title="'+ value.title +'" /></a><br/>');
})
}
.HTML
<fb:login-button scope="user_photos" onlogin="getAlbums()">Grant Permissions to Allow access to Photos and Albums</fb:login-button>
也许这会对你有所帮助。
问题是循环没有等待封面查询并继续前进,返回对象没有封面 URL。
当然,因为FB.api是一个异步方法。
我认为这不可能那么难做到,但我找不到足够长的解决方案。
您还必须在循环中为第二个FB.api调用使用回调函数,并在其中实现一个计数器 - 当此计数器显示所有请求都已完成时,您可以将数据传递到其他地方(或在该函数中使用它,因为"返回"它将不起作用 - 因为该方法是异步的)。
也许最好立即使用 FQL,因为在那里你可以将必要的数据"连接"在一起,并在一次调用中获取所有数据;类似于 f.e. 的多查询。
{
"q1" : "SELECT aid, name, cover_object_id FROM album WHERE owner = me()",
"q2" : "SELECT aid, src_big FROM photo WHERE object_id IN
(SELECT cover_object_id FROM #q1)"
}
(在图形 API 资源管理器中测试此查询。
相关文章:
- 检测对背景大小的支持:封面
- 使用Facebook api获取专辑封面
- 从 Spotify 应用程序中的回调获取专辑数据
- HTML5视频标签 - 如何设置封面背景大小
- Facebook活动封面URL
- 在https网站上用javascript加载封面图片
- 在卷轴上固定和取消固定照片和封面照片下方的内容
- 如何从vimeo获取专辑列表
- 使用jquery创建封面
- 如何使用Spotify应用程序API制作大型专辑播放器
- 为什么Graph API会在首次登录时返回我相册的问号封面照片,并在后续登录时返回正确的图像
- Mozilla和Opera'背景尺寸:封面'不会'不起作用
- 缩放元素与使用 jQuery 的背景封面成比例
- 获取相册的封面照片
- 通过PHP从mp3文件中获取封面艺术并显示它
- 无法关闭封面弹出窗口
- 在盒子上渲染书籍封面
- 使用背景大小计算背景集上特定部分的大小:封面;
- 更改picasa专辑封面图像
- 使用Masonry、jQuery和PHP制作专辑封面库