Die Facebook-API ist der letzte Dreck …

Ich programmiere gerade einen bidirektionalen Sync zwischen Facebook und Friendica. Ich habe schon bereits bidirektionale Verbindungen zwischen Pump.io und Friendica, sowie Twitter und Friendica programmiert.

Dies war kein wirkliches Problem. Die APIs dieser Systeme sind gut strukturiert, selbst erklärend und bieten alle Informationen mit einem einzigen Zugriff. Die Verbindungen waren schnell programmiert.

Und es gibt Facebook. Facebook hat eine unübersichtliche API-Struktur. Man kann zwischen zwei verschiedenen Abfragearten wählen. Ich habe mich für FQL (ähnlich zu SQL) entschieden. Nach ein paar Stunden hatte ich dann eine Abfrage zusammengebaut, die halbwegs die Infos liefert, die ich gerne hätte. Dazu muss ich in dieser einen Abfrage mehrere Tabellen miteinander verknüpfen.

Ein Problem ist, dass ich immer noch nicht alle Informationen erhalte. So suche ich derzeit noch vergeblich nach den Standort-Informationen.

Aber es gibt ein viel größeres Problem: Ich sehe längst nicht alle Beiträge. Wenn man die Ergebnisse der Weboberfläche mit meiner Abfrage vergleicht, sieht man, dass da Beiträge fehlen. Und um es seltsam werden zu lassen: Ich sehe mit verschiedenen Facebook-Clients unterschiedliche Inhalte. So gibt es Personen, die ich bei Hootsuite und der Facebook-Webseite sehe – aber nicht über Friendica. Oder es gibt Inhalte, die ich bei Friendica und der Facebook-Webseite sehe – aber nicht bei Hootsuite.

Und um es endgültig dämlich werden zu lassen: Wenn ich den Access-Token des API Explorers verwende (Ein Webfrontend, um Befehle auszuprobieren), sehe ich wiederum ganz andere Inhalte – obwohl die identischen Zugriffsrechte eingestellt sind).

Es kann übrigens auch passieren, dass man einige Beiträge einer Person lesen kann – und mittendrin geht es auf einmal nicht mehr. Nach ein paar Stunden kann es aber dann wiederum sein, dass man die Person wieder lesen kann.

Die API bietet ein extrem indeterministisches Verhalten. Oder mit anderen Worten:

Die API ist der letzte Dreck.