Facebook FQL - 如何获取我发给朋友的帖子的帖子

时间:2010-03-21 00:02:09

标签: facebook facebook-fql fql.multiquery

我有一个Facebook桌面应用程序,其中一些测试用户都已授予stream_read&离线访问权限。 我可以轻松地检索每个用户的流和帖子的帖子轮廓。 我不能轻易做到的是检索用户对他们朋友的一面墙所做的帖子。

事实上,这曾经使用过相当复杂的多重查询,但现在已停止工作,或只是间歇性地工作......

是否有人愿意分享他们的方法,如果存在或讨论可能对这种类型的复杂查询有什么限制?

3 个答案:

答案 0 :(得分:2)

我试了一下,遇到了我相信的同样的问题,但也许我可以帮助解释一下。

这可能值得在Facebook维基谈话页上发布,看看Facebook的某个人是否可以对此有所了解,除非我在这里遗漏了一些东西。

USER_ID 的任何地方都需要填写您要搜索的用户, F_ID1 F_ID2 是朋友。

FQL#1:应该工作(理论上)

  • 首先得到你所有人的清单 朋友
  • 然后在IN子句中使用该列表 下一个查询
  • 过滤到刚发布的帖子 通过USER_ID
  • 确保消息不是NULL

FQL#1:没有回复帖子

{
"friends":"SELECT uid2 FROM friend WHERE uid1= USER_ID ",

"postsonfriendswall":"SELECT source_id, actor_id, target_id, message FROM stream WHERE source_id IN (SELECT uid2 FROM #friends) AND message != '' AND actor_id = USER_ID "

}

FQL#2:返回帖子

但奇怪的是,如果你只限于一个朋友(F_ID1),你将收回发给他们朋友墙的帖子USER_ID!

{
"friends":"SELECT uid2 FROM friend WHERE uid1= USER_ID ",

"postsonfriendswall":"SELECT source_id, actor_id, target_id, message FROM stream WHERE source_id IN (SELECT uid2 FROM #friends WHERE uid2 = F_ID1) AND message != '' AND actor_id = USER_ID "

}

FQL#3:没有回复帖子

然而,尝试将另一位朋友添加到IN F_ID1& F_ID2 ... 再没有结果 ...

{
"friends":"SELECT uid2 FROM friend WHERE uid1= USER_ID ",

"postsonfriendswall":"SELECT source_id, actor_id, target_id, message FROM stream WHERE source_id IN (F_ID1,F_ID2) AND message != '' AND actor_id = USER_ID "

}

答案 1 :(得分:0)

更正:经过进一步测试,我发现这个解决方案不能100%工作。 它将返回一些但不是你在其他墙上发布的所有帖子 - 我不知道限制因素是什么 - 所以我认为这是一个悬而未决的问题。

部分解决方案: 因此,这是FQL多重查询,它可以生成用户在朋友的墙上发布的墙贴:

{"query1":"SELECT post_id FROM stream WHERE source_id IN (SELECT target_id FROM connection WHERE source_id = USER_ID)", 
 "query2":"SELECT actor_id, post_id, target_id, message FROM stream WHERE (actor_id = USER_ID) AND (post_id IN (SELECT post_id FROM #query1))"}

第一个查询对属于用户的所有“目标”进行嵌套选择(朋友和应用程序?)&将这些用作流查询的source_id值 第二个查询使用从第一个查询返回的post_id来再次查询流,并将actor_id属性设置为用户的id。

我不知道ORDER或LIMIT条款是否有助于返回更近期的查询 - 有人关心确认吗?

答案 2 :(得分:0)

至少我发现我可以使用php:

$facebook->api("/<friend_uid>/feed") 

准确回复用户墙上显示的内容。您可以分页查询。很遗憾,您无法过滤您的查询,但上面显示的定位朋友留言墙除外。然而,API速度很慢,并且比Multiquery产生了更多的API调用。很遗憾,但如果您遇到使用FQL(单个FQL或多个查询)时未能看到所有帖子的情况,这似乎是唯一的选择。

在Facebook上登录的错误:如果您有这个问题,请将您的反馈提交回来! http://bugs.developers.facebook.net/show_bug.cgi?id=11247