【问题标题】:How to get most liked, commented and shared posts from Facebook's API如何从 Facebook 的 API 中获得最多的点赞、评论和分享的帖子
【发布时间】:2014-06-23 17:51:56
【问题描述】:

我正在尝试从 Facebook 获取一些数据,告诉我在给定的日期范围内,对于给定的 Facebook 页面,哪些帖子的点赞数和分享率最高。

如果我查询 API 以获取所有单独的帖子并在我自己的代码中循环遍历它们,我可以获得这些数字,但我经常从 API 中收到错误“每 600 秒 600 次调用”速率限制错误来自他们,因为我正在为每个帖子打电话。我已经尝试使用 FB 的批处理图请求,但这并没有减少出现该错误的可能性。

有没有办法让我不需要打这么多电话?

【问题讨论】:

  • 要找到最流行的一种,我认为单独的 API 调用是唯一的方法。 /page/statuses 将在一次调用中返回所有帖子。但如果要比较的状态更新超过 600 个,则可能需要等待这 10 分钟。

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


【解决方案1】:

是的,您必须进行单独的 API 调用。批量api请求算作普通请求[0]:

例如,一批 10 次 API 调用将计为 10 次调用,并且批处理中的每个调用都会以同样的方式造成 CPU 资源限制。

我的建议:

  • 在服务器端调用graph api并将结果存储在数据库中
  • 在每次通话之间进行一些延迟
  • 您可以通过在每个请求之间设置一些延迟来增加请求限制
  • 使用多个扩展页面访问令牌 [1] 并为每个调用随机选择
  • 在没有 sdk 的情况下进行调用 - 您可以使用例如发出简单的 GET 请求。卷曲到https://graph.facebook.com/post_id?access_token=access_token

[0] - https://developers.facebook.com/docs/graph-api/making-multiple-requests/#limits

[1] - https://stackoverflow.com/a/17234650/1587309

【讨论】:

  • 如何使用简单的 GET 请求而不是 sdk 帮助? sdk 不是自己发出相同的 GET 请求吗?
  • 因为它通常更快,所以您的授权是基于普通访问令牌而不是同一应用程序颁发的应用程序 ID 和应用程序机密以及用户/页面访问令牌对。您可以简单地生成 5 个应用程序,每次获取普通扩展页面访问令牌和随机访问令牌以绕过 API 速率限制。
  • 我怀疑你说的是否正确。 FB SDK 只是对graph.facebook.com 端点的低级 HTTP 调用的封装。并且使用页面访问令牌并没有真正的帮助,因为对于很多操作,您需要一个实际的用户访问令牌
  • 如果您使用非常简单的 http 调用,则不必包含 sdk 并担心身份验证。添加一个抽象层还将页面访问令牌在用户更改密码之前不会过期。
  • 我怀疑差异会在一个可测量的维度上。看看 PHP SDK 是如何工作的,您会发现它只是低级调用的包装器。而且,关于页面访问令牌,只有使用 Graph API v1.0 才能获得无限持久的访问令牌。这与是否使用 SDK 无关。此外,正如我所写,对于很多呼叫,您需要应用程序或用户访问令牌。
【解决方案2】:

您可以使用 FQL(至少在 2016 年 4 月 30 日之前可用)来实现这一目标:

select post_id, comment_info.comment_count, like_info.like_count, share_info.share_count from stream where source_id={PAGE_ID}

只需将 {PAGE_ID} 替换为实际的页面 ID。您也可以通过具有read_stream 权限的页面访问令牌运行此操作。

如果您只需要主页的帖子,请将以下内容添加到 FQL 查询中:

and actor_id={PAGE_ID}

【讨论】:

  • FQL 将在 2015 年 4 月 30 日(Graph API v1.0 结束)之前可用,并且仅适用于 2014 年 4 月 30 日之前创建的应用程序developers.facebook.com/docs/reference/fqldevelopers.facebook.com/docs/apps/changelog
  • 了解事实:您引用的第一个链接说:Version 2.0 of the Facebook Platform API is the last version where FQL will be available. Versions after 2.0 will not support FQL 这清楚地表明 FQL 将在 v2.0 中可用。 developers.facebook.com/docs/apps/versions/#howlong 声明 A version will no longer be usable two years after the date that the subsequent version is released. So if API version 2.0 is released on April 30th 2014 and API version 2.1 is released May 30th 2014 then v2.0 would expire on May 30th 2016, two years after the release of v2.1
猜你喜欢
  • 1970-01-01
  • 2016-08-15
  • 2012-11-04
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多