2011-10-12 13 views
13

グラフのapiを使用して画像のコメントを取得しますが、最初に時間を作成して結果を並べ替えてから、最新のデータに戻したいと考えています。 SQL文 'order by create_time desc'と同様に、このようなパラメータがあるかどうかはわかりません。現在、オフセットと最新のデータへのアクセスを制限するだけでなく、コメントの総数を知って、facebook graph apiコメントリストsort、like 'orderby = desc'?

pagesize = 25; 
offset = comments.count - pagesize; 
limit = 25; 

URL = "https://graph.facebook.com/" + OBJECT_IDするために使用

+ "/ comments?access_token =" + access_token + "& limit =" + limit + "& offset =" + limit;

次のページ:

offset -= 25 

が、数値のcomments.ountは時々

正確ではなく、リクエストURLの結果が一致しない時々に戻るには

非常に良い解決をするかどうか

私は私たち間違った方法( '限界'と 'オフセット'パラメータ)を編集!


あなたの答えをいただき、ありがとうございます。

"グラフィックスAPI"キャッシュの存在?

私はメッセージと46 comments.requestsのURLを、投稿するにはパラメータを設定します。

= 1

= 0 &制限を相殺その後、それは最後のコメント(最新のもの)に返す必要があり、実際にコメントの真ん中に戻り、数回試しましたが、オフセットと制限を に設定しました。返された結果によると、中央の1は 最新コメント

Iが制限値は「comment.count」よりも大きい設定した場合は、返されたデータはすべて、公式サイトやFacebook一貫

です

キャッシュの理由は?

ありがとうございました〜もう一度〜

+0

なぜFQLを使用しないのですか?この場合、より柔軟に思えます。 –

+0

fql〜** SELECT object_id、text、time FROM comment WHERE object_id = 'object_id' order by time desc **実際には非常に柔軟ですが、「graph api」ではありませんか?私はそれを〜使うことができます。 'fql'は「グラフAPI」ですか?もしそれがあまりにもいいとすれば〜! – mast

+0

グラフAPIはWHEREとORDER BYを持っていないので、あなたのケースではFQLはもっと柔軟に見えます。 FQLは、グラフオブジェクトと接続に関するクエリを実行するため、グラフの特徴です。 –

答えて

3

グラフAPIは、最新のオブジェクトを最初に返します。

Facebookはフェッチされたデータをフィルタリングする2つのキーワードを提供しています。

  1. 制限:最新のレコードを返します「リミット」数
  2. オフセット:レコードの戻り値「リミット」数オフセット位置

からだから、オブジェクトのために掲示最新の「x」のコメントを取得します

https://graph.facebook.com/[OBJECTID]?limit=[X] & = 0

オフセット

は(賢明ページ)

https://graph.facebook.com/[OBJECTID]?limit=[X] &オフセット= [Xの*のPAGENO]

次の "X" のコメントを取得するには

答えがあなたにとって十分であることを願っています。

+0

ありがとうございます。 "グラフィックスAPI" **キャッシュ**の存在? – mast

+1

これはまだですか? * offset = 0 *は最も古いコメントを参照しているようですが、* offset = 1 ... n *は後でコメントを返します! – dbau

+0

私の更新された答えを見てください。 Facebook GRAPH APIはデフォルトで最新のレコードを最初に取得し、通常のFacebookのウェブサイトでも同様です。したがってオフセットゼロは最新の "LIMIT"レコード数を取得します –

5

@dbau - FQLを使用する方が良いです。私の経験上、非常に単純な呼び出しをしない限り、Graph API呼び出しで得られるものをほとんど制御できません。

なぜFQLを使いたくないのですか? FQLは、グラフAPIのエンドポイントです。まだFQLを介してのみ返すことができるデータがあります。

これはあなたが探している結果を得るでしょう。クエリはURLエンコードされている必要があります。わかりやすくするためにプレーンテキストで残しました。

https://graph.facebook.com/fql?access_token=[TOKEN]&q= 
    SELECT id, fromid, text, time, likes, user_likes FROM comment 
     WHERE object_id = [OBJECT_ID] ORDER BY time DESC LIMIT 0,[N] 

あなたは、Facebookは、クエリが実行された後access_token所有者に表示されていないアイテムをフィルタリングするので、あなたが[N]コメントは、毎回返されません見つけることがあります。あなたはLIMITを上回り、返された余分な結果をフィルタリングするか、ユーザーaccess_tokenを使用している場合は、WHERE節にAND can_like = TRUEを追加して、存在する場合は[N]という投稿が返されることを保証することができます。