3

我正在开发一个 fb 应用程序,我想在其中为用户提供时间线,但我需要排除诸如“用户喜欢照片”、“对朋友照片的评论”之类的故事。我如何过滤和排除这些类型的故事

4

3 回答 3

2

您可以通过查找或键的存在来过滤这些帖子,因为这些在用户发布的帖子中不存在。storystory_tags

文档story中引用key的描述

用户非故意生成的故事文本,例如两个用户成为朋友时生成的故事文本;您必须在您的应用中启用“包括最近的活动故事”迁移才能检索这些故事

或者你可以像这样尝试 FQL 的

select message from stream where source_id=me() and type in (46,56,80,56,128,247)
and filter_key in (select filter_key from stream_filter where uid=me())

这可能会帮助您将帖子减少到您想要的帖子。

更新

您可能不需要使用type由林果皞验证的字段来减少结果,因此查询减少到

select message from stream where source_id=me() AND filter_key in
(select filter_key from stream_filter where uid=me())
于 2013-05-10T12:03:38.650 回答
1

使用 fql,如果描述是“A 关注 B”、“A 喜欢英特尔。”、“A 评论了他自己的链接。”...等,则“type”字段为“null”:

SELECT created_time,description,likes,message,post_id FROM stream WHERE source_id=me() AND type!="" AND created_time<=now() LIMIT 50 

更新: 我发现我的查询不排除页面故事上的帖子,Anvesh Saxena 的回答比我的正确。

从 source_id=me() AND filter_key in 的流中选择消息(从 uid=me() 的 stream_filter 中选择 filter_key)

2013 年 5 月 15 日星期三更新: 似乎我们遇到了麻烦,因为不同的 filter_key 可能拥有相同的 post_id。例如,某些链接可能同时出现在 "nf" filter_key 和 Links filter_key "app_2309869772" 在此处输入图像描述

更新:我做了一些研究,最后得出了这个查询(将 2 "me()" 替换为其他 user_id 也可以):

SELECT viewer_id, app_id, target_id, post_id, created_time, message, type, permalink FROM stream WHERE source_id=me() AND created_time<=now() AND ((type IN(46,80,128,237,247)) OR (type="" AND target_id =我()))限制150

此 FQL API 查询与 Web 浏览器比较(我通过单击墙上的“所有故事”进行测试):

优势:

  • 将包括在短时间内创建的所有重复提要。Web 浏览器版本可能会排除此重复的提要。

坏处:

  • 不包括“被某人标记”(这是有道理的,因为源 id 不是 me(),由于性能问题,没有必要查询所有朋友并按 me() IN(tagged_ids) 过滤)
  • 不包括“更新封面照片”和“更新个人资料照片”供稿。
  • 我发现有些情况下用户通过手机发布的帖子没有从流表中返回,即使是特定的 post_id,我们也无能为力。
  • 当您的朋友在您的时间轴上分享照片和链接时,“(type="" AND target_id=me())" 不起作用。朋友分享的状态是作品。

如果有人有更好的查询,请告诉我

干杯

于 2013-05-10T11:59:24.330 回答
0

您在请求用户提要时从 Graph api 获得的所有 json 数据都有一个元素“类型”,可以是例如链接、评论、状态……选择您需要的那些。

于 2013-05-10T11:50:23.193 回答