Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook FQL-如何获取我在朋友的墙上发的帖子_Facebook_Facebook Fql_Fql.multiquery - Fatal编程技术网

Facebook FQL-如何获取我在朋友的墙上发的帖子

Facebook FQL-如何获取我在朋友的墙上发的帖子,facebook,facebook-fql,fql.multiquery,Facebook,Facebook Fql,Fql.multiquery,我有一个facebook桌面应用程序,其中一些测试用户都已授予stream_读取和脱机访问权限。 我可以很容易地检索到每个用户的流和配置文件的帖子。 我不能轻松地检索用户在朋友的墙上发的帖子 事实上,它过去用于处理相当复杂的多查询,但现在已经停止工作,或者只是间歇性地工作 有没有人愿意分享他们的方法(如果有的话),或者讨论这种复杂查询可能有哪些限制?我尝试了一下,遇到了我认为相同的问题,但也许我可以帮你解释一下 这可能是一些值得在Facebook wiki talkpage上发布的内容,看看Fa

我有一个facebook桌面应用程序,其中一些测试用户都已授予stream_读取和脱机访问权限。 我可以很容易地检索到每个用户的流和配置文件的帖子。 我不能轻松地检索用户在朋友的墙上发的帖子

事实上,它过去用于处理相当复杂的多查询,但现在已经停止工作,或者只是间歇性地工作


有没有人愿意分享他们的方法(如果有的话),或者讨论这种复杂查询可能有哪些限制?

我尝试了一下,遇到了我认为相同的问题,但也许我可以帮你解释一下

这可能是一些值得在Facebook wiki talkpage上发布的内容,看看Facebook的人是否能对此有所了解,除非我在这里遗漏了什么

我把用户ID放在任何地方都需要填写您要搜索的用户,而F_ID1、F_ID2是朋友

FQL 1:理论上应该有效 首先,列出你所有的工作 朋友 然后在in子句中使用该列表 下一个查询的 过滤到只制作帖子 由用户_ID 确保消息不为空 FQL 1:未返回任何帖子 FQL 2:返回帖子 奇怪的是,如果你只限制一个朋友F_ID 1,你会收到用户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。。。又没有结果了


更正:进一步测试后,我发现此解决方案无法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))"}
第一个查询对属于用户friends&apps?&的所有目标进行嵌套选择将这些用作流查询的源id值。 第二次查询使用从第一次查询返回的post_id再次查询流,并将actor_id属性设置为用户id


我不知道ORDER或LIMIT子句是否有助于返回最近的查询-有人愿意确认吗?

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

$facebook->api("/<friend_uid>/feed") 
获取用户墙上显示的内容。您可以分页查询。不幸的是,你不能过滤你的查询,除了上面显示的以朋友墙为目标。然而,该API非常慢,并且比多重查询产生更多的API调用。遗憾的是,如果您遇到在使用FQL(单个FQL或多查询)时无法看到所有希望看到的帖子的情况,那么这似乎是唯一的选择

Facebook上登录的Bug:如果您有此问题,请提交您对此Bug的反馈!

嘿,贾斯汀-感谢您的输入-我希望能够为每个用户执行单次嵌套查询或多次查询-否则,我们讨论的是N x N查询,取决于每个用户的平均好友数。我会在facebook开发者网站上查询并发布一个更新,如果我有进展的话。我会很感兴趣为什么我不能一次回复超过一个朋友的帖子。。。所以如果你发现了,请把它传下去。如果有帮助的话,我们也会投票赞成:嘿,贾斯廷-看看我下面的答案,告诉我这是否适合你。现在我不相信可以再使用多查询了,因为这只是太多的数据让脸谱网考虑在一个请求中返回。和你一样,我也求助于在朋友的墙上查询我的帖子,一次一个朋友。如果平均朋友数在100左右,这就可以了,但有些人的朋友数超过1K,显然不是一个理想的解决方案。
{"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))"}
$facebook->api("/<friend_uid>/feed")