0

EDITED 私はasp.net mvc 3アプリケーションでグラフapiを使用してfacebookでユーザーを検索しています。Asp.mvc 3のアプリケーションでFacebook apiを検索

public void AsyncSearch(ICollection<JSonObject> result, string query, string objectType) 
    { 
     var fbClient = new FacebookClient(FacebookTokens.AccessToken); 
     var searchUri = string.Format("https://stackoverflow.com/search?q={0}&type={1}, query, objectType); 


     var tempResult = (JsonObject)fbClient.Get(searchUri); 
     var elements = (JsonArray)tempResult.Values.ToArray()[0]; 

     elements.ForEach(element => 
          { 
          result.Add(element); 
          }); 

     var next = (JsonObject)tempResult.Values.ToList()[1]; 

     while (next.Keys.Contains("next")) 
     { 
     tempResult = (JsonObject)fbClient.Get((string)next["next"]); 
      elements = (JsonArray)tempResult.Values.ToArray()[0]; 
      elements.ForEach(element => 
           { 
          result.Add(element); 
           }); 

      next = (JsonObject)tempResult.Values.ToList()[1]; 
     } 
    } 

結果には最大で600個のオブジェクトが含まれます(各検索ではオブジェクトの数が異なります)。 私は、例えば "anna"をクエリパラメータに入れた場合、結果は10000以上でなければならないと思います。 なぜですか?いくつかのキーワードですべてのユーザーを検索する方法はありますか?

+0

名前に「USERNAME」が含まれているユーザーの数は、時間の経過とともに簡単に変更できます。 「すべてのユーザー」とはどういう意味ですか? –

+0

「アンナ」などのUSERNAMEを設定した場合、結果は約400のオブジェクトになります。名前が「アンナ」のユーザーがさらに多いと思います。 –

+1

でも、 "ページング":{"次":...あなたはもっと結果を得るかもしれません。 "/ search?q = USERNAME&type = user&limit = 200 - "を選択して自分の金額を選択することができます。 –

答えて

1

パフォーマンス上の懸念から、Facebookは結果のページを変更します。 JSONオブジェクトの終わりを見ると、その中に次のリンクと前のリンクがあるページングオブジェクトが存在するはずです。したがって、すべての結果を得るには、複数のクエリを実行し、それらを集約する必要があります。