Artikelformat

FQL Fallstrick – Kapitel 1

In diesem Beitrag geht es um ein paar kleinere Fallstricke, über die man ganz gerne bei der Benutzung von FQL stolpern kann. Dokumentiert sind diese natürlich nicht unbedingt in der offiziellen Referenz und von daher möglicherweise nur bis zu einem gewissen Teil gültig. Nach meiner Erfahrung ändern sich vor allem nicht dokumentierte Features und Funktionen gerne mal von heute auf morgen. Und manchmal hat man als Softwareentwickler den Spaß, dass es außerhalb der offiziellen Facebook Breaking Changes kleinere Änderungen für die eigene Software zu einem Breaking Change werden.

Limit – wo ist denn das Limit?

Ein Beispiel FQL-Aufruf ist folgender:

select post_id, type, created_time, updated_time from stream
 where source_id=178880938678 order by created_time desc limit 1000

Damit erhalten wir die 1000 neusten Posts von der 1und1 Facebook-Seite. Das limit ist aber nicht so, wie man es von einem SQL Aufruf her kennt und noch schlimmer scheint es ein internes Limit zu geben. Dieses liegt nach meinen Test bei ca 500. Zurückgeliefert werden aber wiederum keine 500 Posts. Diese werden wohl aus der FB-Datenbank bezogen und danach wird rausgefiltert, was der anfragende Benutzer nicht sehen darf und so kommt man üblicherweise irgendwo zwischen 450 und 470 Posts raus. Gelegentlich sind es auch weniger.

Alle Posts abrufen

Mit der obigen Abfrage kann man den ältesten Post programmatisch ermitteln. Dazu speichert man das Datum des ältesten Posts und nutzt den Zeitstempel als zusätzliche Klausel im where-Statement (created_time). Dies ist bei einem „normalen“ Access-Token aber nur bedingt von Erfolg gekrönt.

Unter normal verstehe ich den Access-Token eines beliebigen Benutzers. Im Gegensatz dazu gibt es den Token eines Page-Admins.

Mit dem normalen Access-Token kann man nur eine gewisse Anzahl von Posts abrufen. Bei Tests bin ich hier an eine Grenze von ca. 1000 Post gekommen, bei weiteren Tests konnte ich auch mehr Posts abrufen. Diese Grenze wird häufig im Netz beschrieben und man liest, dass man nicht mehr Posts erhalten kann. Das ist bei dem gerade benannten „normalen“ Token gelegentlich richtig. Aber es geht auch anders.

Nutzt man den Page-Admin Token kann man über die created_time alle Posts der Seite erhalten und mit alle meine ich wirklich ALLE. Bei einem sehr speziellen Test konnte ich so zu einer Seite 137.000 Posts abrufen. Wichtig – und das kann man nicht oft genug erwähnen – der Access Token des Page Admins kann diese alten Posts erreichen.

Ein Beispiel Code findet sich im Php Monkeys Subversion Repo.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.