FQL Facebook возвращает <fql_query_response list = "true" /> - PullRequest
4 голосов
/ 03 августа 2010

Я пытаюсь заставить fql-запрос Facebook работать с помощью браузера, у меня есть действительный токен oauth (я могу делать с ним вызовы Graph API).

Вот URL, который я пробовал:

https://api.facebook.com/method/fql.query?query=SELECT metric, value FROM insights WHERE object_id=89192912655 AND end_time=1280430050 AND period=86400 AND metric='page_fans'&access_token=?

Я также попытался сначала выполнить запрос fql через кодировщик sql:

https://api.facebook.com/method/fql.query?query=SELECT%20metric%2C%20value%20FROM%20insights%20WHERE%20object_id%3D89192912655%20AND%20end_time%3D1280430050%20AND%20period%3D86400%20AND%20metric%3D'page_fans'&access_token=?

Я попробовал несколько других метрик, я также могу получить метрики через график API, поэтому я знаю, что они есть.

Я уверен, что я делаю что-то глупое, но я был озадачен этим некоторое время! Каждый звонок просто возвращает это:

<?xml version="1.0" encoding="UTF-8"?>
<fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"/>

Возможно, у меня проблемы с датами, я использовал это, чтобы получить дату: (ruby)

t = Time.now
=> Tue Aug 03 15:00:50 -0400 2010
>> t = t - 5.days
=> Thu Jul 29 15:00:50 -0400 2010
>> t.to_i
=> 1280430050

есть идеи?

Ответы [ 5 ]

5 голосов
/ 11 октября 2010

Эй, ребята, мы подтвердили эту ошибку.Это связано с тем, что конечное время нужно выравнивать по дням в PST, чтобы таблица Insights возвращала какие-либо данные.Чтобы решить эту проблему, мы представили две пользовательские функции, которые можно использовать для запроса таблицы аналитики:

  1. end_time_date (): принять DATE в виде строки (например, '2010-08-01')
  2. period (): принять «время жизни», «день», «неделя» и «месяц»

Например, теперь вы можете запросить таблицу со значениями, используя:

SELECT metric, value FROM insights
WHERE object_id = YOUR_APP_ID AND
      metric = 'application_active_users' AND
      end_time = end_time_date('2010-09-01') AND
      period = period('day');

Скоро мы документируем эти функции, извините за неудобства!

PS Если вы не хотите использовать функцию end_time_date (), убедитесь, что отметка времени end_time в вашем запросе выровнена сразделители дня в PST.

Спасибо!

Facebook Insights Team

1 голос
/ 14 сентября 2010

Ответ, который вы видите, является пустым ответом, который не обязательно означает, что нет доступных метрических данных. Несколько идей, что может вызвать это:

  • Используете ли вы токен доступа пользователя? Если да, владеет ли пользователь страницей? Предоставлено ли расширенное разрешение read_insights для токена пользователя / доступа? Как насчет «offline_access»?
  • end_time необходимо указать как полночь по тихоокеанскому времени.
  • Допустимые периоды: 86400, 604800, 2592000 (день, неделя, месяц)
  • Имеет ли запрос метрика page_fan_adds значимые результаты для данного периода?

Хотя я не работал с таблицей аналитики, работа с FQL Facebook научила меня не ожидать сообщений об ошибках, кодов ошибок, а пытаться следовать документации (если она доступна), а затем экспериментировать с ней ...

Что касается даты, используйте следующий фрагмент рубина для полуночи, сегодня:

Date.new(2010,9,14).to_time.to_i

На странице документации Graph API я также нашел следующее:

Олицетворение

Вы можете выдавать себя за страницы, администрируемые вашими пользователями, запрашивая расширенное разрешение "manage_pages".

Как только пользователь предоставит вашему приложению разрешение «manage_pages», подключение «account» даст дополнительное свойство access_token для каждой страницы, администрируемой текущим пользователем. Эти access_tokens могут быть использованы для звонков от имени страницы. Разрешения, предоставленные пользователем вашему приложению, теперь будут также применяться к их страницам. ( источник )

Вы пытались запросить это разрешение и использовать & metadata = 1 в запросе Graph API для получения токена доступа для каждой учетной записи?

0 голосов
/ 05 ноября 2010

Если, как и я, вы пришли сюда после получения этого из другого оператора FQL, то ваша проблема не включает параметр access_token, например,

https://api.facebook.com/method/fql.query?query=SELECT+name+FROM+user+WHERE+uid+%3D+me()&access_token=...

(Выможно использовать fb.getAccessToken ())

0 голосов
/ 14 сентября 2010

Я не уверен, что дата верна.Вы действительно хотите, чтобы дата была целым числом?Обычно SQL принимает даты в формате db, поэтому для его форматирования вы должны использовать:

Date.new(2010,9,14).to_s(:db)
(Time.now - 5.days).to_s(:db)
# or even better:
5.days.ago.to_s(:db)
0 голосов
/ 14 сентября 2010

Если вы хотите узнать количество поклонников на странице Facebook, используйте что-то вроде:

https://graph.facebook.com/cocacola

Ответ содержит свойство fan_count.

...