2013-12-15 9 views
7

3つのURLに対して3つの入力フィールドを持つアプリケーションを構築する必要があります。アプリケーションでは、Facebookのすべてのパブリックポストを検索し、その特定のURLを投稿したユーザーを見つける必要があります。私はこのコードを使用しています:すべてのパブリック・フェイスブック・ポストの照会

$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 />"; 
    } 
    }} 

これは、1つの特定のリンクを投稿した200のFacebookのユーザーの名前を印刷します。しかし、私は上記のように、私は複数のURLの一致を検索する必要があります。このアプローチを使用すると、3回のクエリ呼び出しを行い、次に結果を相互参照し、3つの結果リストに表示されるユーザーを取得する必要があります。 1回の呼び出しで必要な結果を返すようにフォームを作成する方法はありますか? FQLは強力なツールですが、このような公開クエリには使用できないと思います。私は本当に公共のグラフのAPIにのみ制限されていますか?そうであれば、グラフAPIのみを使用して複雑なクエリを作成することは可能ですか?

EDIT#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 

同様に、3つのリンクをすべて含む投稿を検索するには、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

感謝を検索するので、それはもはや不可能です。 Graph API Explorerツールでこのクエリをテストしましたか?それは自分の壁からの投稿で動作するはずです。私はプライバシーを公開しています。リンクの組み合わせが何であっても結果は得られません。私たちは何かを欠いていると思います... – Xardas

+0

あなたは正しいです。行動は変です!グラフエクスプローラを使って最初のクエリをテストしたところ、うまくいきました。ただし、複数のURLには結果が表示されません。 –

+0

私は、 'CONSTINS(" http://vimeo.com ")とstrpos(message、 'http://vimeo.com')> = 0のストリームからのSELECTメッセージを試してみましたが、" http:// www .youtube.com ")とstrpos(メッセージ、 'http://www.youtube.com')> = 0'となり、結果が返されました。 –

1

Facebookが無効なパブリックポスト12月中旬に答えるため2013年

+0

ウィキペディアが言うように、引用が必要です。 Facebookの公式文書上の投稿へのリンクは本当に "あなたの意見を売る"のに役立つだろう:) – javatarz

関連する問題