Facebook Graph API在2011年之前没有提供任何数据?

时间:2012-01-16 09:30:25

标签: facebook facebook-graph-api facebook-ios-sdk

我是iPhone上Fazzle app的作者。我的应用程序所做的基本上是下载用户状态更新并按各种顺序对它们进行排序(例如,最喜欢,最多评论)。

我一直想知道Facebook是否允许开发者自加入Facebook之日起获得用户的状态更新,因为当我启动应用程序时,我只能获得2009年的用户状态。今天我刚刚发现Facebook限制图形API调用自2011年以来。

我尝试查看文档asked around here,并通过论坛联系Facebook。但到目前为止,Graph API中没有关于此限制的说法。我错过了什么?我还有其他方法可以在2011年之前获取状态更新数据吗?

您可以自己测试here。使用此GET请求:

https://graph.facebook.com/(your_user_id)/statuses?limit=99999

向下滚动,您会发现并非所有内容都已下载。

这是因为与Facebook时间线的利益冲突吗?如果是这样,那很糟糕。

记录为错误here。仍然希望有人可以指出我的错误,如果有的话。

3 个答案:

答案 0 :(得分:10)

绝对可以从Graph API中获取较旧的帖子;没有限制(至少不是我所知道的)。使用sinceuntil参数返回结果,而不是offset

https://graph.facebook.com/me/feed?access_token=[token]&until=1165474447

Documentation 分页sinceuntil上不会非常深入:

  

查询连接时,有几个有用的参数可用于过滤和翻页连接数据:

     

但基本上,until就像是说“直到这个日期给我发帖”,而且类似于“给我这个日期以来的帖子”。所以你可以使用这样的循环在用户的Feed中一直滚动回来:

// pseudocode
timestamp = now
do {
  posts = graph.get(/me/feed?until=timestamp)
  if posts.length == 0: break;
  // process posts
  timestamp = posts[0].created_time // first should be the oldest, in theory
} while (1)

until替换为since,将最早的created_time替换为最新版本,以便及时转发,例如:从上次用户运行应用程序以来抓取任何较新的帖子。

答案 1 :(得分:2)

Facebook已经confirmed this as a bug。如果您曾经关注Facebook的错误跟踪器,不幸的是,这意味着他们实际上很难解决这个问题。

答案 2 :(得分:0)

您需要分页。限制有限。请阅读http://developers.facebook.com/blog/post/478/