Facebook Graph API 不提供任何早于 2011 年的数据?

Posted

技术标签:

【中文标题】Facebook Graph API 不提供任何早于 2011 年的数据?【英文标题】:Facebook Graph API does not give any data earlier than 2011? 【发布时间】:2012-01-16 09:30:25 【问题描述】:

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

我一直想知道 Facebook 是否允许开发人员从他们加入 Facebook 之日起获取用户的状态更新,因为当我启动该应用程序时,我只能获取 2009 年以来的用户状态。今天我刚刚发现 Facebook 将 Graph API 调用限制为刚刚从 2011 年开始。

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

你可以自己测试here。使用这个 GET 请求:

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

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

这是因为与 Facebook 时间线存在利益冲突吗?如果是这样,那就糟了。

记录为错误here。如果有任何错误,仍然希望有人能指出我的错误。

【问题讨论】:

【参考方案1】:

您绝对可以从 Graph API 获得较早的帖子;没有限制(至少我不知道)。使用sinceuntil 参数来翻页结果,而不是offset

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

Documentation 用于 分页 并没有深入了解 sinceuntil

查询连接时,有几个有用的参数可让您过滤和分页浏览连接数据:

限制、偏移:https://graph.facebook.com/me/likes?limit=3` 直到,因为(unix 时间戳或strtotime 接受的任何日期):https://graph.facebook.com/search?until=yesterday&q=orange

但基本上,until 就像是说“给我发帖直到这个日期”,因为是类似的,“给我发帖直到这个日期”。因此,您可以使用类似这样的循环一直滚动回用户的提要:

// 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 替换为最新的以及时推进,例如抓取自用户上次运行应用程序以来的任何新帖子。

【讨论】:

我刚刚试过这个:(my_id)/statuses&since=01+January+2009 和 747882379/statuses&since=01-01-2009 但它们都不起作用。他们给了我一个空数据集。 确保你给它的日期可以被strtotime解析。我没有办法测试你的,但我使用了像“2009 年 1 月 1 日”这样的格式,所以应该可以。 尝试使用/me/feed 连接而不是/me/statuses 我都试过了,但都不管用...您是否在 Graph API Explorer 工具中自己测试过它们? developers.facebook.com/tools/explorer 是的,他们在我的帐户上工作。您是否授予read_stream 权限?【参考方案2】:

Facebook 自 confirmed this as a bug 以来。如果您曾经关注过 Facebook 的错误跟踪器,不幸的是,这意味着他们几乎没有机会真正修复此问题。

【讨论】:

是的,我之前提交了一些错误,但希望他们能修复这个:( 他们每周接受/确认的错误比他们每周修复的要多得多,他们实际修复的错误是他们的开发合作伙伴(如 zyngas、spotify 等)遇到的错误。 OffBySome,这可能是真的。因此,为什么值得一家公司花时间成为合作伙伴。正如他们所说,金钱让世界运转起来。【参考方案3】:

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

【讨论】:

试图对其进行分页。我的 GET 请求:(my_user_id)/statuses?limit=20&offset=90。在 2011 年之前仍然没有给我任何东西。 奇怪,对我来说也类似。我不能得到任何早于 2010-12-17T15:23:37+0000 的东西。您应该将其记录为 Facebook 的错误。 以前我也买不到 2009 年以前的东西。我希望 Facebook 监控 ***,因为它被列为 developers.facebook.com/support 上的技术帮助资源之一。 不是,你需要在developers.facebook.com/bugs提交官方错误报告 好吧,我提交了错误,如果人们对错误投票我猜会有所帮助:)

以上是关于Facebook Graph API 不提供任何早于 2011 年的数据?的主要内容,如果未能解决你的问题,请参考以下文章

facebook graph api - 缺少字段

我想使用'facebook graph api'导入在我们的平台上登录facebook的所有成员的facebook帖子

加入群组的Facebook Graph Api

我需要来自 Facebook Graph Api 的用户朋友的性别比例

加入群组的 Facebook Graph Api

Facebook Graph API:用户性别