【问题标题】:Facebook Graph API does not give any data earlier than 2011?Facebook Graph API 不提供任何早于 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。如果有任何错误,仍然希望有人能指出我的错误。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    但基本上,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 监控 stackoverflow,因为它被列为 developers.facebook.com/support 上的技术帮助资源之一。
    • 不是,你需要在developers.facebook.com/bugs提交官方错误报告
    • 好吧,我提交了错误,如果人们对错误投票我猜会有所帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多