查询所有公开的facebook信息
我需要构建一个应用程序,该应用程序将具有三个URL的三个输入字段。 然后,应用程序需要搜索Facebook上的所有公共帖子,并查找发布该特定网址的用户。 我正在使用此代码:
$q = "http://www.someurl.com";
$search = $facebook->api('/search?q=' . $q .'&type=post&limit=200');
foreach ($value as $fkey=>$fvalue) {
if(isset($fvalue['from']['name']))
{
echo $fvalue['from']['name']."<br />";
}
}}
这会打印出张贴了一个特定链接的200个Facebook用户的名字。 但是,正如我上面提到的,我需要搜索多个URL匹配。 通过使用这种方法,我需要进行三个查询调用,然后交叉引用结果并获取出现在所有三个结果列表中的用户。 有没有什么方法可以形成查询来在一次调用中返回所需结果? 我现在说FQL是一个强大的工具,但我认为它不能用于这种公共查询。 我真的只限于公共图表API? 如果是这样的话,是否有可能仅使用图形API来形成复杂的查询?
编辑#1:我尝试使用以下FQL:
SELECT source_id FROM stream WHERE
CONTAINS('http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic')
AND CONTAINS('http://kotaku.com/5917693/ten-years-of-civ-ii-lock-the-world-in-perpetual-war')
AND CONTAINS('http://www.youtube.com/watch?v=1TBxdXm3DP0') limit 200
据我所知,这应该返回在他们的fb流中有这三个链接的用户。 但是,情况并非如此。 我得到这一切都错了吗?
更简单的方法是检查邮件的邮件部分中是否存在URL。 这个fql应该可以工作:
SELECT message FROM stream WHERE CONTAINS("http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic")
AND strpos(message,'http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic') >=0
同样,要搜索包含所有三个链接的帖子,您可以进一步扩展fql。
SELECT message FROM stream WHERE CONTAINS("http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic")
AND strpos(message,'http://www.incgamers.com/2013/12/doom-20th-anniversary-today-true-classic') >=0
AND CONTAINS("http://kotaku.com/5917693/ten-years-of-civ-ii-lock-the-world-in-perpetual-war")
AND strpos(message,'http://kotaku.com/5917693/ten-years-of-civ-ii-lock-the-world-in-perpetual-war') >=0
AND CONTAINS("http://www.youtube.com/watch?v=1TBxdXm3DP0")
AND strpos(message,'http://www.youtube.com/watch?v=1TBxdXm3DP0') >=0
由于Facebook在2013年12月中旬禁用了公共帖子搜索功能,因此不再可能。
链接地址: http://www.djcxy.com/p/17909.html