Prośby o wgląd w API Batch Facebook

W przypadku projektu muszę zdobyć spostrzeżenia na stronie przez długi okres czasu (np. 1-2 lata) na Facebooku.

Po raz pierwszy spróbowałem wykonać jedną prośbę, ale okazało się, że tylko prośba

<code>/PAGE_ID/insights?since=xxx&until=xxx
</code>

nie zwraca wszystkich danych, które chcę (w jakiś sposób tłumi dane, tak jakby istniało jakieś ograniczenie rozmiaru odpowiedzi).

Następnie próbowałem podzielić zakres dat (np. 01.04.2011-01.04.2011 -> 01.04.2011-01.08.2011-01.12.2011-01.04.2011), który również nie działał tak, jak chciałem .

Moim następnym podejściem było zażądanie tylko wartości wglądu, których potrzebuję, takich jak „page_stories, page_impressions, ...”. Żądania wyglądały tak

<code>/PAGE_ID/insights/page_impressions/day?since=xxx&until=xxx
</code>

To działało, ale nie z ajaxem. Czasami zdawało się, że niektóre żądania zostały odrzucone (zwłaszcza, gdy zmieniłam kartę przeglądarki w Google Chrome) i muszę mieć pewność, że wszystkie żądania zwracają odpowiedź. Rozwiązanie synchroniczne zajęłoby zbyt wiele czasu, biorąc pod uwagę, że jedno żądanie wymaga co najmniej 2 sekund, a zakres dat 2 lata może mieć około 300 pojedynczych żądań.

Wreszcie natknąłem się na możliwość korzystania z Facebooka, aby wykonywać żądania partii, co jest dokładnie tym, czego potrzebuję. Może spakować do 50 żądań w jednym wywołaniu, co znacznie obniża przepustowość. I tu utknąłem. Api facebooka podaje kilka przykładów, jak go używać, ale żaden z nich nie zadziałał, gdy testowałem je w eksploratorze wykresów i przez php facebook api sdk. Próbowałem spakować tę prośbę

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

do żądania wsadowego, ale nie powiodło się.

Wygląda na to, że api jest podsłuchiwany. Zawsze daje mi ten błąd, gdy używam znaku zapytania „?” w polu „relative_url”.

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

Oto, co próbowałem:

Daje to błąd „musi być tablicą JSON”:

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

Te dwa rzeczywiście zwracają dane, ale ignorują parametry:

<code>?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"}}]
</code>

A ten mówi mi, że jest to „Nieobsługiwane żądanie pocztowe”:

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

Czy ktoś może pomóc?

questionAnswers(2)

yourAnswerToTheQuestion