Facebook C # SDK метод пакетного запроса вернуть пустой массив данных - PullRequest
2 голосов
/ 26 марта 2012

Я создаю приложение Facebook, которое получает информацию о странице пользователя по нескольким показателям.Ex.для "page_active_users" и "page_active_users в одном пакетном запросе. Я использую Facebook C # SDK. Но не могу получить данные из аналитических данных Facebook (GraphAPI).

Я использовал 5 различных способов получить данные, но безуспешноПри использовании метода Graph 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);

Любая помощь приветствуется. Спасибо заранееДхармендра Мисти

1 Ответ

3 голосов
/ 31 марта 2012

Я нашел решение самостоятельно.Надеюсь, это кому-нибудь поможет.Вот решение.

///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.

Спасибо.;) Дхармендра Мистри

...