2012-03-26 5 views
2

私は、複数のメトリックのためにユーザーのページの洞察を得るFacebookアプリケーションを作成しています。 Ex。 Facebook C#SDKを使用していますが、Facebookの洞察(GraphAPI)からデータを取得できません。Facebook C#sdkバッチリクエストメソッド空のデータ配列を返します

5つの方法でデータを取得しましたが、成功しませんでした。ブラウザでグラフAPIメソッドを使用してページのデータを示していますが、バッチリクエストでは、データの空の配列を返します。

// TYPE1

var para1 = new FacebookBatchParameter(HttpMethod.Get, "MyPageId/insights/") 
{ 
    Data = new { access_token = aToken, since = "2012-01-01", metric = "page_active_users" } 
}; 

// TYPE2

var para2 = new FacebookBatchParameter(HttpMethod.Get, "fql/", new 
    { 
     q = new[]{ 

"SELECT value,end_time FROM insights WHERE object_id=MyPageId AND metric='page_active_users' AND end_time=end_time_date('2012-01-01') AND period=86400" 
      } 
    }) { Data = new { access_token = aToken } }; 

//タイプ3

var para3 = new FacebookBatchParameter().Query(
        "SELECT value,end_time FROM insights WHERE object_id=MyPageId AND metric='page_active_users' AND end_time=end_time_date('2012-01-01') AND period=86400"); 

//タイプ4

var para4 = new FacebookBatchParameter 
      { 
       Path = "MyPageId/insights/", 
       //Parameters = new {since = "2012-01-01"}, 
       Data = new { access_token = aToken, since = "2012-01-01", metric = "page_active_users" }, 
       HttpMethod = HttpMethod.Get 
      }; 

//タイプ5

var para5 = new FacebookBatchParameter 
      { 
       Path = "MyPageId/insights/page_active_users?since=2012-01-01", 
       //Parameters = new {since = "2012-01-01"}, 
       Data = new { access_token = aToken }, 
       HttpMethod = HttpMethod.Get 
      }; 

//Executed all above type by passing it to below method one by one.But always return empty data array while data is exists on Facebook which I tested using Grap API tool. 

var result = client.Batch(para1-5); 

すべてのヘルプ理解。 ありがとうございました。 Dharmendra Mistry

答えて

3

私自身で解決策を見つけました。これが誰かを助けることを願っています。ここに解決策があります。

///I created an enum for list of metrics that facebook is providing 
public enum FacebookMatricType 
{ 
     page_active_users, 
     page_active_users_locale 
} 

//Created a list of Facebook batch request for each metric using LINQ to Object and //concatenate string using string.format method. 

var batchParameters = (from FacebookMatricType matricType in Enum.GetValues(typeof (FacebookMatricType)) 
            select new object[] 
               { 
               pPageAccessToken,"insights",matricType.ToString(),pFromDate.Date.ToString("yyyy-MM-dd"),pPageId 
               } 
            into objectParamter 
            select new FacebookBatchParameter 
               { 
                HttpMethod = HttpMethod.Get, 
                Path = 
                 string.Format(
                  "https://graph.facebook.com/{0}/{1}/{2}?since={3}&access_token={4}", 
                  objectParamter) 
               }).ToList(); 

//Once I get the list of request I execute it using facebook web client using C# SDK. 

var facebookClient = new FacebookClient(pProfileAccessToken); 
var results = facebookClient.Batch(batchParameters.ToArray()); 
//Results are ready to deserialize. 

ありがとうございます。 ;) Dharmendra Mistry

+0

あなたは、batchParametersの最大長を知っていましたか?私は1つのbatchParametersにいくつのFacebookBatchParameterを挿入できるのか? – Oleh

+0

わかりませんが、私は50に制限されていると思います。どのくらいの努力をしていますか? –

+0

私は20歳になり、うまく動作します。しかし、私は限界に関するいくつかの文書を見つけるつもりはない。 – Oleh

関連する問題