Как выполнить запрос FQL Insights с помощью Facebook Graph API - PullRequest
1 голос
/ 06 января 2012

Я безуспешно пытаюсь выполнить FQL-запрос, используя Graph API для получения значения счетчиков Insights.

Кто-нибудь знает, как я могу это сделать?

Я использую "Facebook C # SDK""версия 5.4.1, C # 4.0.

Если я использую пример кода C #, предоставленный в документации

    var fb = new FacebookClient(m_accessToken);
    dynamic result = fb.Query("SELECT name, uid FROM user WHERE uid= me()");

, я получаю хороший ответ

{"name":"","uid":100002632407830}

Стот же синтаксис, если я запрашиваю счетчик Insights "pages_fans" и использую библиотеку 5.4.1

var fb = new FacebookClient(m_accessToken);
  dynamic result = fb.Query("SELECT metric, value FROM insights WHERE object_id=6176018219 AND metric='page_fans' AND end_time=end_time_date('2011-12-31') AND period=period('lifetime')");

Я всегда получаю пустой ответ

 {[]}

С тем же кодом, но с библиотекой 5.2.1 я всегда получаю хороший ответ

 {[{"metric":"page_fans","value":"125535"}]}

Это та же самая проблема, описанная здесь: Ошибка с запросом FQL с библиотекой 5.4.1 но с другим синтаксисом.

В настоящее время я использую запросы FQL Insights с использованием REST API (с библиотекой 5.2.1), но я хочу перейти на запросы FQL Insights с использованием Graph API (с библиотекой 5.4.1), посколькуREST API устарел.

Где ошибка:

  1. В моемзапрос синтаксиса?
  2. В библиотеке "Facebook C # SDK"?
  3. На сервере Facebook?

С уважением.

Ответы [ 4 ]

2 голосов
/ 09 января 2012

Я сделал запрос в Facebook Graph API Explorer

https://graph.facebook.com/fql?q=SELECT metric, value FROM insights
WHERE object_id=6176018219 AND metric='page_fans' AND
end_time=end_time_date('2011-12-31') AND period=period('lifetime')

Я всегда получаю пустой ответ.

{
  "data": [
  ]
}

Это ошибка Facebook.

В Facebook была создана ошибка: http://developers.facebook.com/bugs/232510993491615?browse=search_4f08c675cce9d2265724293

1 голос
/ 23 октября 2012

Убедитесь, что у вас есть правильные разрешения при получении токена доступа

<fb:login-button perms="read_insights"></fb:login-button>
1 голос
/ 18 января 2012

Я нашел другой способ получения информации, который работает надежно

Я нашел другой способ получить информацию, которая кажется надежной. документация найдена здесь http://developers.facebook.com/docs/reference/api/insights/.

с дополнительными параметрами, позволяющими изменять формат и период - ниже пример.

https://graph.facebook.com/2439131959/insights/application_active_users/[period]?format=json&since=[timestamp]&until=[timestamp]&access_token=[access_token]

период - день, месяц, неделя, время жизни. метка времени должна быть действительной только в полночь PST. access_token = может быть. 1. ничего для метрик, которые не нуждаются в разрешении. 2. app_id | секретный код или 3. ваш токен аутентификации разрешен, если у вас есть доступ к аналитическим данным приложения или страниц (т. Е. Владельцам или аналитическим пользователям).

C # SDK пример:

FacebookClient fbClient = новый FacebookClient ([appID], [secret]);

        DateTime untilDate= (new DateTime([Now].Year, [Now].Month, [Now].Day));
        DateTime sinceDate= (new DateTime([Now].Year, [Now].Month, [Now].Day)).AddDays(-1);
        TimeSpan t = (untilDate- new DateTime(1970, 1, 1));
        int timestampUntil = (int)t.TotalSeconds;
        t = (sinceDate- new DateTime(1970, 1, 1));
        int timeStampSince = (int)t.TotalSeconds;



        var result = (IDictionary<string, object>)fbClient.Get([appID] + "/insights/" + [metricID] + "/" + [period] + "?format=json&since="+timeStampSince+"&until="+timestampUntil );
         Console.WriteLine(result["data"]);
0 голосов
/ 07 января 2012

Эта проблема связана с Facebook C # SDK .

Вероятно, лучшее, что вы можете сделать, это сообщить об ошибке в codeplex и заменить использование end_time_date на "time in seconds" и period на "lifetime".

...