1

件名が言うように、関連するユーザー データを使用して、Facebook ページから最新のコメントを取得しようとしています。Open Graph と PHP SDK を使用しています。

これは投稿に対してうまく機能します:

$fql_query = "
    SELECT fromid, id, post_id, time, text  
    FROM comment  
    WHERE post_id IN (SELECT post_id FROM stream WHERE source_id = '" . $fb_id . "') 
    ORDER BY time DESC LIMIT 1000";

$feed = $facebook->api(array(
    'method' => 'fql.query',
    'query' => $fql_query
    ));

そして、これは私が必要とするユーザーの詳細を取得する方法です:

$fql_query = "
    SELECT pic_square, name  
    FROM user 
    WHERE uid = '" . $user_id . "'
    ";

そして、私が見つけることができるすべてによると、これは fql.multiquery を使用して 2 つを結合する必要があります。

$fql_queries = "{
    \"query1\" : \"
    SELECT fromid, id, post_id, time, text 
    FROM comment 
    WHERE post_id IN (SELECT post_id FROM stream WHERE source_id = '" . $fb_id . "') 
    ORDER BY time DESC LIMIT 1000
    \", 
    \"query2\" : \"SELECT pic_square, name FROM user WHERE uid IN (SELECT fromid FROM #query1)\"
    }";

$feed = $facebook->api(array(
    'method' => 'fql.multiquery',
    'queries' => $fql_queries
    ));

しかし、空の配列を返すだけです。私がどこで間違っているのか、または私が必要とすることを行うためのより良い方法を知っている人はいますか? いつものTIAさん。

4

1 に答える 1

2

私のページの 1 つで Graph API エクスプローラーでこれをテストしたところ、正常に動作しました。

このマルチクエリは、Graph API エクスプローラーのページで機能しますか? はいの場合、それは権限の問題です。

おそらく、あなたの問題は、json をハードコーディングする方法にあります。私のサイトではこのような構文を使用しています。(それも読みやすいです):

$fql_queries = array(
   'query1' => "SELECT fromid, id, post_id, time, text...",
   'query2' => "SELECT pic_square, name FROM user..."
);

...
    'queries' => json_encode($fql_queries)
于 2013-01-09T04:36:14.880 に答える