我有一个 facebook 桌面应用程序,其中一些测试用户都已授予 stream_read 和离线访问权限。 我可以轻松检索每个用户的信息流和个人资料中的帖子。 我不能轻易做到的是检索用户在他们 friend 的墙上发布的帖子。
事实上,这曾经用于相当复杂的多查询,但现在已经停止工作,或者只是间歇性地工作......
是否有人愿意分享他们的方法(如果存在)或讨论这种复杂查询可能存在哪些限制?
最佳答案
我试了一下,遇到了我认为同样的问题,但也许我可以帮助解释一下。
这可能是值得在 Facebook wiki 讨论页上发布的东西,看看 Facebook 的人是否可以阐明它,除非我在这里遗漏了什么。
我放USER_ID 的任何地方都需要填写您要搜索的用户,F_ID1、F_ID2 是 friend .. .
FQL #1:应该有效(理论上)
- 首先获取您所有的列表 friend
- 然后在 IN 子句中使用该列表 下一个查询
- 过滤掉只发布的帖子 通过 USER_ID
- 确保消息不为空
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:帖子被退回
但奇怪的是,如果您只限制一个 friend (F_ID1),您将取回 USER_ID 发到他们的 friend 墙上的帖子!
{
"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:不返回任何帖子
然而,尝试将另一个 friend 添加到 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 "
}
关于Facebook FQL - 如何获取我发布到 friend 墙上的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485262/