私は、毎日ユニークなコメント投稿者ごとに Web ページのすべての毎日のコメントをカウントするコンテストを実行しています。月末にコメント票が最も多かった人が優勝。私はこれのために完全に機能するロジックを書いています...今日まで。
ページに 900 を超えるコメントがあると、投票カウンターの上昇が止まります。これはページネーションに関係していると考えたので、FQL クエリを変更して LIMIT と OFFSET を使用して一度に 100 個のコメントを解析し、投票カウント関数の結果を結合しましたが、クエリを実行すると (手動でも、https://graph.facebook.com/comments url をアドレス バーに追加) 500 から 600 のコメントが大量に生成されるため、Web ページの最後の 400 程度のコメントは返されません!
このメソッドは失敗しているため、コメント データを取得するためのより信頼できる方法はありますか?
更新: いくつかのコードを提供していますが、Graph API と同じ問題が FQL にも残っていることがわかりました。これが私のグラフ API 呼び出しです。
https://graph.facebook.com/comments/?ids=http://www.burlesquebitch.com/article.php?id=538&limit=500
900 を超えるコメントが存在する場所で制限を最大 600 まで上げると (または結果がその範囲を超えるオフセットを追加すると)、失敗し始めます。以前のコメントは消えます。結果を数えてみると、500 から 600 の間のどこかにあります。
https://graph.facebook.com/comments/?ids=http://www.burlesquebitch.com/article.php?id=538&limit=1000
その後、最終的に fql が機能するようになりました。
$fql_query_result = file_get_contents("https://graph.facebook.com/fql?q=SELECT+object_id,+id,+text,+time+,+fromid+FROM+comment+WHERE+object_id='366760226746431'+LIMIT+1000");
$data = json_decode($fql_query_result,true);
これも失敗しますが、800 ~ 900 くらいです。いずれにせよ、悪い行動は同じです。結果を日付範囲に分離することで、失敗のしきい値内に収まることを期待して、クエリを時間で制限するいくつかの実験も行いました。
$fql_query_result = file_get_contents("https://graph.facebook.com/fql?q=SELECT+object_id,+id,+text,+time,+fromid+FROM+comment+WHERE+object_id='366760226746431'+AND+time>1365984000+AND+time<1366416000+LIMIT+500");
$data = json_decode($fql_query_result,true);
しかし、サイコロはありません。時間比較で < を > にすると、クエリ全体が失敗し、何も返されません。理想的には、以下の回答で示唆されているように、ページング情報を取得したいのですが、クエリで SELECT できません... _cursor で終わるものを取得しようとすると、クエリは空を返します。
私は、Graph API コードに存在する恐ろしいバグが何であれ、FQL コードにも拡張されていると結論せざるを得ません。このサイズの Facebook オブジェクトからデータを取得する方法は他にありません。