2012-03-26 3 views
2

여러 메트릭에 대한 사용자 페이지에 대한 통찰력을 얻는 Facebook 응용 프로그램을 만듭니다. 전의. "page_active_users"하나 개의 일괄 요청에 "page_active_users. 내가 페이스 북 인사이트 (GraphAPI).Facebook C# sdk 일괄 요청 메소드가 빈 데이터 배열을 반환합니다.

내가 데이터를 얻을 수 있지만 실패하는 5 가지 방법을 사용하여 데이터를 얻을 수 없습니다 페이스 북의 C# SDK를 사용.하지만하고있다. 브라우저에서 그래프 API 방법을 사용하여 페이지에 대한 데이터를 표시하지만 배치에서 데이터의 빈 배열을 반환 요청합니다.

// 타입 1

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

// 타입 2

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 } }; 
,

어떤 도움 이해할 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); 

// 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 
      }; 

// 타입. 고맙습니다. 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의 최대 길이를 알고 계셨습니까? 얼마나 많은 FacebookBatchParameter를 하나의 batchParameters에 삽입 할 수 있습니까? – Oleh

+0

잘 모르겠지만 50 대 한정으로 생각합니다. 얼마나 노력하고 있습니까? –

+0

나는 20 살이되어 잘 작동한다. 그러나 나는 한계에 관한 문서를 찾지 않을 것이다. – Oleh