【问题标题】:Getting post lists from facebook pages从 Facebook 页面获取帖子列表
【发布时间】:2017-11-11 04:31:45
【问题描述】:

我正在尝试使用 restfb(java) 从给定的一组 facebook 页面中获取帖子列表

List fbPages = Arrays.asList("178697151159/posts", "538560813021153/posts");

JsonObject fetchObjectsSubResults = client.fetchObjects(fbPages, JsonObject.class, Parameter.with("fields","shares,created_time"),Parameter.with("limit", 5));

但是我从 facebook api 收到运行时错误,如下所示.. 是否有任何机构可以帮助我解决这个问题或者这不可能(

线程“main”com.restfb.exception.FacebookOAuthException 中的异常:收到 OAuthException 类型的 Facebook 错误响应:(#803)您请求的某些别名不存在:178697151159/posts?,538560813021153/posts? (代码 803,子代码为空) 在 com.restfb.DefaultFacebookClient$DefaultGraphFacebookExceptionMapper.exceptionForTypeAndMessage(DefaultFacebookClient.java:1278) 在 com.restfb.DefaultFacebookClient.throwFacebookResponseStatusExceptionIfNecessary(DefaultFacebookClient.java:1195) 在 com.restfb.DefaultFacebookClient.makeRequestAndProcessResponse(DefaultFacebookClient.java:1136) 在 com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:1058) 在 com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:1020) 在 com.restfb.DefaultFacebookClient.fetchObjects(DefaultFacebookClient.java:476) 在 main.main(main.java:75)

【问题讨论】:

  • 这看起来像您使用的方法预计只传递页面 ids,但您将 page-id/posts 传递给它,Graph API 无法将其识别为页面 id(这并不奇怪。)您需要查看您在那里使用的 SDK/客户端库的文档,了解 正确 的方法是从哪些 id 中指定您想要哪些边/字段.

标签: facebook facebook-graph-api restfb


【解决方案1】:

我建议每页使用 1 次调用。所以它应该看起来像:

Connection<Post> postConnection = client.fetchConnection(pageId+ "/posts", Post.class, Parameter.with("fields","shares,created_time"), Parameter.with("limit","5"));

根据您的用例,您可以使用 for 循环运行 postConnection 以获取所有帖子或使用 postConnection.getData() 从结果集的第一页获取数据。

在这两种情况下,您最终都可以使用 Post 类型并访问您感兴趣的字段。其他字段为空。

顺便说一句,在一次调用中处理多个 id 或一个接一个地请求这些 id 对 Facebook 调用没有任何影响。内部计算的金额是相同的;在你的情况下 2.

【讨论】:

  • 另外,我想解释一下您的问题开始时调用的正确语法。从 Facebook 上的多个页面获取帖子的正确端点类似于 graph.facebook.com/posts?ids=178697151159,538560813021153。我认为这在 RestFB 中不受支持,只有没有端点的调用才会起作用。但这只是一个猜测,我没有深入检查这个调用。如果这很重要,您可以在 Github 上打开一个问题...
  • @Norbet 是的,它适用于一页,这就是我尝试以相同方式使用多个页面的原因(我知道这很愚蠢)。实际上,我担心的是我可以进行的 api 调用的数量,尽管如果我同时进行包括所有页面 id 的调用会有所不同。如果没有区别,我可以为此使用循环。谢谢。顺便说一句,你有什么想法如何减少这个 pupuse 的 api 调用次数。
  • 取决于您的用例。如果您想获取所有帖子,您应该增加限制,因为这是每页的限制。如果您只需要前 5 个帖子,一切都很好。在这种情况下,唯一可以帮助的就是 webhook。您订阅页面提要并在提要上发生新情况时立即收到更新。例如,如果写了一篇新文章。因此,如果有新内容,您只需要从 Facebook 轮询数据。
  • @Norbert 当我尝试通过浏览器获取同一 Facebook 页面的帖子时,我尝试使用 resFB But there is a mismatch in total post count 从 Facebook 页面获取所有帖子。我手动确认我没有从该页面获得一些最近的帖子。检索到with restFB is 2922 并通过(HTTP) URL in browser is 3044 检索到的帖子数。这是什么原因,如果我想使用 restFB 从该页面获取所有帖子,我该如何克服?
  • @ParthVishvajit 首先,这是另一个问题,但这里有一个答案。您进入过去的次数越多,Facebook 向您提供所有帖子的保证就越少。在一些 Facebook 错误报告中,一位 Facebook 工程师对此进行了解释。此外,您可能有一些不允许平台访问的用户。他们的帖子/cmets 等在 Graph API 中不可见。或许你可以拿一个丢失的帖子并尝试通过 Graph API 获取它的数据...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2011-11-20
  • 2022-09-26
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多