2014-11-03 58 views
0

我试图让所有由他人发布的内容在他自己的Facebook墙上发布,其中包括图像,视频,文本或状态更新。Node.JS - Facebook API - 获取订阅源但排除系统生成的虚拟状态

我已经尝试了以下API与Node.JS,但都导致了不同的问题。该API调用内容丢失或返回额外的系统生成的数据,如“用户A已成为用户B的朋友”或“用户喜欢图片”。

让我通过一些例子说明这一点:

  1. 网址:https://graph.facebook.com/barackobama/statuses。 API调用返回一个json文档,其中最后一次update_time =“2013-07-01T15:08:15 + 0000”,但实际上Obama's page比这更新近得多。
  2. Url:https://graph.facebook.com/random.things.16/posts。 API调用返回空的JSON数组,而实际的facebook page包含一些图片。如果您尝试对其他一些用户进行此API调用,您可能也会像上面提到的那样获取系统生成的状态。
  3. Url:https://graph.facebook.com/CwcvilleGuardian/feed。与帖子API类似的问题。

请注意,系统生成的雕像,如“用户喜欢的图片”。我很乐意通过以下方式之一来处理它们:

  1. 如果某些参数可应用于API调用,则将其从结果中排除。
  2. 解决这个“一张图片”,以便我们可以知道用户喜欢哪张图片。请注意,实际上用户可以喜欢视频,链接,帖子,评论或其他内容。

回答

0
  1. 的Facebook不再打电话东西纯粹是 “状态” programmaticly很久以前。现在一切都是不同类型的“链接,状态,照片或视频”的“发布”。所以,你如果你希望所有的帖子,你需要调用

    https://graph.facebook.com/v2.1/barackobama/posts

  2. 你正在试图将对象是一个“用户”类型的帐户。您不能根据用户名进行查询,您必须使用应用程序作用域用户ID(一个数字)。你看到的东西确实“看起来”像一个“页面”,但是谁曾经设置过它,已经打破了Facebook的TOS,因为它真的是一个“页面”时被注册为“用户”。这就是说你必须得到一个应用范围的用户ID才能获得关于用户的“公共”信息。您不需要应用范围ID来获取有关页面的公共信息。为了获得应用程序范围的用户ID,用户将授予您的应用程序权限,甚至可以获取公共信息。

  3. 与2相同,但是这是一个用户帐户,所以在此没有TOS违规。这里您使用“Feed”而不是“Posts”。 “帖子”是用户发布到他们自己的时间表的所有内容的列表。 “Feed”是用户发布的内容以及其他人发布到用户时间表的内容的集合。

+0

谢谢,弗兰克。现在测试实施,将在我解决之后再标记。 – Lee 2014-11-04 05:50:40