2013-12-15 67 views
7

我需要構建一個應用程序,該應用程序將具有三個URL的三個輸入字段。然後,應用程序需要搜索Facebook上的所有公共帖子,並查找發佈該特定網址的用戶。我正在使用此代碼:查詢所有公開的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個用戶的姓名。但是,正如我上面提到的,我需要搜索多個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流這三個環節的用戶。但是,情況並非如此。我得到這一切都錯了嗎?

回答

2

更簡單的方法是檢查郵件的郵件部分中是否存在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 
+0

謝謝回答不再是可能的,因爲Facebook的殘疾人公共職位搜索。您是否使用Graph API Explorer工具測試了這個查詢?它應該與我自己的牆上的帖子一起工作,我已將他們的隱私設置爲公開。無論我輸入什麼鏈接組合,我都無法獲得任何結果。我想我們錯過了一些東西...... – Xardas

+0

你說得對。行爲很奇怪!我使用圖形瀏覽器測試了第一個查詢,並且工作正常。但是,它沒有顯示多個網址的結果。 –

+0

我甚至試過'SELECT消息從流WHERE CONTAINS(「http://vimeo.com」)和strpos(消息,'http://vimeo.com')> = 0 AND CONTAINS(「http:// www .youtube.com「)和strpos(消息,'http://www.youtube.com')> = 0',它返回了一些結果。 –

1

這是12月中旬2013年

+0

正如維基百科會說的,需要引用。 Facebook官方文檔上的帖子鏈接將真正幫助「推銷你的觀點」:) – javatarz

相關問題