Facebook Batch API Insight Anfragen
Für ein Projekt muss ich über einen langen Zeitraum (z. B. 1-2 Jahre) die Erkenntnisse einer Seite von Facebook erfassen.
Ich habe zuerst versucht, eine einzelne Anfrage zu stellen, aber es stellte sich heraus, dass nur eine Anfrage gestellt wurde
<code>/PAGE_ID/insights?since=xxx&until=xxx </code>
gibt nicht alle gewünschten Daten zurück (irgendwie werden Daten unterdrückt, als ob die Größe der Antwort begrenzt wäre).
Ich habe dann versucht, den Zeitraum aufzuteilen (zB 01.04.2011-01.04.2011 -> 01.04.2011-01.08.2011-01.12.2011-01.04.2011), was auch nicht ganz so funktioniert hat, wie ich es wollte .
Mein nächster Ansatz bestand darin, nur die Einsichtswerte anzufordern, die ich benötige, wie "page_stories, page_impressions, ...". Die Anfragen sahen so aus
<code>/PAGE_ID/insights/page_impressions/day?since=xxx&until=xxx </code>
Dies funktionierte tatsächlich aber nicht mit Ajax. Es schien manchmal einige Anfragen zu löschen (besonders wenn ich den Browser-Tab in Google Chrome geändert habe) und ich muss sicher sein, dass alle Anfragen eine Antwort zurückgeben. Eine Synchronisierungslösung würde viel zu viel Zeit in Anspruch nehmen, wenn man bedenkt, dass eine Anforderung mindestens 2 Sekunden benötigt. Bei einem Datumsbereich von 2 Jahren kann es sein, dass 300 einzelne Anforderungen zu lange dauern.
Zuletzt bin ich über die Fähigkeit von Facebook gestolpert, Batch-Anfragen zu machen, was genau das ist, was ich brauche. Es können bis zu 50 Anforderungen in einem Anruf gepackt werden, wodurch die Bandbreite erheblich verringert wird. Und hier stecke ich fest. Die Facebook-API enthält einige Beispiele für die Verwendung, aber keine davon hat funktioniert, als ich sie im Graph Explorer und über die PHP-Facebook-API-SDK getestet habe. Ich habe versucht, diese Anfrage zu packen
<code>PAGE_ID/insights/page_fan_adds/day?since=1332486000&until=1333695600 </code>
in eine Batch-Anforderung aber fehlgeschlagen.
Es scheint, dass die API abgehört ist. Es gibt mir immer diesen Fehler, wenn ich ein Fragezeichen verwende "?" im Feld 'relative_url'.
<code>{ "error": { "message": "batch parameter must be a JSON array", "type": "GraphBatchException" } } </code>
Folgendes habe ich versucht:
Diese geben den Fehler "Muss ein JSON-Array sein":
<code>?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day?since=1332486000&until=1333695600"}] </code>
Diese beiden geben tatsächlich Daten zurück, ignorieren jedoch die Parameter:
<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>
Und dieser sagt mir, dass dies eine nicht unterstützte Post-Anfrage ist:
<code>?batch=[{"method":"POST","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000 until=1333695600"}] </code>
Kann jemand helfen?