Запросы аналитики Facebook Batch API

Для проекта мне нужно получить информацию о странице за длительный период времени (, например. 1-2 года)в фейсбуке.

Сначала я попытался сделать один запрос, но оказалось, что только запрос

/PAGE_ID/insights?since=xxx&until=xxx

не возвращает все данные, которые я хочу (он каким-то образом подавляет данные, как будто есть какое-то ограничение на размер ответа).

Затем я попытался разделить диапазон дат (, например:. 01.04.2011-01.04.2011 -> 01.04.2011-01.08.2011-01.12.2011-01.04.2011)что тоже не совсем так как я хотел к.

Мой следующий подход заключался в том, чтобы запрашивать только те значения, которые мне нужны, например «страница_истории, страница_впечатления,...». Запросы выглядели так

/PAGE_ID/insights/page_impressions/day?since=xxx&until=xxx

Это действительно работало, но не с ajax. Иногда казалось, что некоторые запросы (отбрасываются, особенно если я менял вкладку браузера в google chrome), и мне нужно быть уверенным, что все запросы возвращают ответ. Синхронное решение заняло бы слишком много времени, учитывая, что для одного запроса требуется не менее 2 секунд, а с диапазоном дат в 2 года у меня может быть около 300 отдельных запросов, это занимает слишком много времени.

Наконец, я наткнулся на возможность facebook делать пакетные запросы, что мне и нужно. Он может упаковывать до 50 запросов за один вызов, что значительно снижает пропускную способность. И вот где я застрял. Facebook API дает несколько примеров того, как его использовать, но ни один из них не работал, когда я тестировал их в Graph Explorer и через php facebook api sdk. Я попытался упаковать этот запрос

PAGE_ID/insights/page_fan_adds/day?since=1332486000&until=1333695600

в пакетный запрос, но потерпел неудачу.

Похоже, что API глючит. Это всегда дает мне эту ошибку, когда я использую вопросительный знак '?' в поле «относительный_url».

{
  "error": {
    "message": "batch parameter must be a JSON array", 
    "type": "GraphBatchException"
  }
}

Вот что я пробовал:

Они выдают ошибку «должен быть массив JSON»:

?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day?since=1332486000&until=1333695600"}]

Эти два фактически возвращают данные, но игнорируют параметры:

?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000 until=1333695600"}]
?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000,until=1333695600"}]
?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":{"since":"1332486000","until":"1333695600"}}]

А этот говорит мне, что это «Неподдерживаемый отправить запрос':

?batch=[{"method":"POST","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000 until=1333695600"}]

Кто-нибудь может помочь?

6
задан Ke Vin 8 April 2012 в 11:08
поделиться