我需要获取按喜欢排序的FB用户的照片。 我通过Facebook JavaScript SDK运行这个FQL查询来获取它们:
SELECT object_id, src_big, src_big_width, src_big_height, link, like_info, caption, created
FROM photo
WHERE owner = MANY_PICS_USER_ID ORDER BY like_info DESC LIMIT 10
对于超过3000张照片的用户,查询失败。事实证明,有很多这样的用户。相关的Facebook错误在http://developers.facebook.com/bugs/438568326189781
作为一个注释:删除“ORDER BY like_info”使查询工作,但我没有简单的方法来获取这些图片,按照喜欢排序
重现:
选择一个至少有3000张照片的FB好友,获取他们的用户ID,并在API GRAPH EXPLORER中运行上述查询(替换MANY_PICS_USER_ID)。
最佳解决方法是什么?或者,您能建议最简单的轻量级Open Graph解决方案吗?
答案 0 :(得分:2)
要按照喜欢对照片进行排序,您需要以下内容:
运行提供前100个结果的查询(将 me 替换为用户ID):
http://graph.facebook.com/me/photos?fields=id,source,likes&limit=100
返回以下数据结构:
"data": [
{
"id": "1234567890",
"source": "http://photo.url.in.facebook.cdn.com/",
"created_time": "2012-09-13T22:52:34+0000",
"likes": {
"data": [
{
"id": "1234567890",
"name": "Full Name"
},
.....
"paging": {
"next": "https://graph.facebook.com/1234567890/likes?limit=25&offset=25"
}
}
},
{
"id": "312323232323",
"source": "PICTURE_URL",
"created_time": "2012-09-12T20:54:27+0000",
"likes": {
"data": [..]
}
},
....
"paging": {
"previous": "http://PREVIOUS_URL?fields=id,source,name,height,width,link,likes&limit=100&since=123456",
"next": "http://NEXT_URL?fields=id,source,name,height,width,link,likes&limit=100&until=234567"
}
如果图片总数超过100,请运行所有下一个查询, 从“下一个”链接开始,直到图片的数量将小于100。
对于每张图片,您需要计算喜欢的总数。如果 喜欢的数量超过25,运行额外的查询 likes.paging.next直到喜欢的数量为< 25,得到 总数量。
按照喜欢的数量对所有这些照片进行排序。
因此,对于拥有3000张照片的用户,每张照片共有30个电话+额外电话,超过25张。