我正在开发一个网络应用程序,它连接到Facebook,获取帖子,以及用户喜欢的其他内容。我在使用新闻Feed(Grap API的主页连接)从用户页面获取所有帖子时遇到问题。
在我的应用中为用户获取访问令牌时,我要求read_stream,user_activities和离线访问权限。然后,当我使用该令牌时,获取
的json feed https://graph.facebook.com/me/home/?access_token=<retrived_access_token>
缺少某些帖子(显示在用户页面上)。我发现我的朋友的帖子只能由他们的朋友看到,不会显示在该Feed中。同样的问题是当前我订阅的用户帖子。
我正在搜索那段时间,我发现,当我使用http://developers.facebook.com/docs/reference/api/中的链接获取我的新闻Feed时,会有更多帖子。它似乎使用为facebook api为测试控制台应用程序生成的令牌。
然后我尝试生成访问令牌,这会使用http://developers.facebook.com/tools/explorer?method=GET给我类似的结果。但即使我向生成令牌提供所有可能的权限,我也无法使其正常工作,但仍有一些缺失的帖子。
我在该帖子Facebook graph API does not return all posts for user中读到了答案,其中提示,这是因为发布帖子的人员设置的权限,他们不希望应用程序检索他们的数据。我运行了一些快速测试,我发现更改该设置是有效的(当有人更改该设置时,她的帖子将从两个提要中消失 - 使用我的app标记为用户,以及在api参考页面上的链接下),但它不是案子。
似乎在api参考页面上生成的此令牌具有特殊权限。
我真的需要尽可能多地从用户页面获取帖子。我知道我不会被他们的作者阻止,但由于我的许多用户订阅了其他用户,我真的需要访问用户页面上显示的帖子。
我也阅读了Facebook graph API: feeds missing in json response,但也没有帮助。
我真的很感激任何帮助。
答案 0 :(得分:4)
无法从feed / home Graph API获取完整的帖子列表,但您可以使用FQL查询stream
表以获取几乎所有朋友发布的帖子,这里是一个简单的示例你将如何使用javascript sdk:
var query = 'SELECT post_id FROM stream WHERE filter_key = "others"';
FB.api('fql', {'q': query}, function(posts) { console.log(posts.data); });
这将为您提供post id,然后您可以使用graph api来获取其余的帖子信息。或者你可以在这里获得完整的字段列表,你不能在FQL中选择*,所以你必须列出你想要的每一件,然后分别得到评论,喜欢和名字。
答案 1 :(得分:1)
http://developers.facebook.com/bugs/228057243915183上有一个已分配/中等错误。您可以通过订阅提高优先级,并指示您可以重现它。
另请参阅http://developers.facebook.com/bugs/231621496918030 Facebook所说的“流表和我/图表有限制。请参阅文档了解更多信息。我们将来会努力使其更加清晰。”就个人而言,我认为文档中确实没有更多信息。