FQL查询具有大量照片的Facebook用户的照片

Ann*_*tal 5 facebook facebook-fql facebook-graph-api facebook-javascript-sdk

我需要获取按喜欢排序的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
Run Code Online (Sandbox Code Playgroud)

超过3000张照片的用户查询失败.事实证明,有很多这样的用户.相关的Facebook bug在这里http://developers.facebook.com/bugs/438568326189781

作为一个注释:删除"ORDER BY like_info"使查询工作,但我没有简单的方法来获取这些图片,按照喜欢排序

要重现:
选择一个包含至少3000张照片的FB好友,获取他们的用户ID,并在API GRAPH EXPLORER中运行上述查询(替换MANY_PICS_USER_ID).

什么是最好的解决方法?或者,您能建议最简单的轻量级Open Graph解决方案吗?

Mar*_*tal 2

要按喜欢对照片进行排序,您需要以下内容:

它返回以下数据结构:

"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"
}
Run Code Online (Sandbox Code Playgroud)
  • 如果图片总数超过 100,则从“下一个”链接运行所有下一个查询,直到图片数量小于 100。

  • 对于每张图片,您需要计算喜欢的总数。如果点赞数超过 25,则从 likes.paging.next 运行额外查询,直到点赞数 < 25 并获取总数量。

  • 按喜欢的数量对所有这些照片进行排序。

因此,对于拥有 3000 张照片的用户,总共将有 30 次调用,加上每张超过 25 个赞的图片的额外调用。