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?