Neben den vielen Open-Graph Themen der F8 war die „Verortung“ von Beiträgen und Photos eines der wichtigsten Themen bei der Weiterentwicklung der Facebook Plattform. Bisher war es Entwicklern jedoch nicht möglich auf diese Daten zuzugreifen. Lediglich „Checkins“, die über’s Handy getätigt wurden, konnten eingelesen werden. Durch die Möglichkeit Photos oder Beiträge auch nachträglich mit Places zu markieren, sowie das Wachstum von themenverwandten Services wie Foursquare nahm die Nutzungsintenstität in den vergangenen Monaten immer mehr ab.
Mit den Updates der gestrigen Nacht hat dies jedoch – teilweise – ein Ende: ab sofort können – sofern der Nutzer entsprechende Rechte gewährt – auf Location-Informationen aller Statusmeldungen, sowie Beiträge mit Bildern über die Graph API abgerufen werden.
Kleiner Wermutstropfen: Wird ein Bild nicht über eine Statusmeldung publiziert, kann die Ortsinformation des Bildes nicht abgerufen werden. D.h. Bilder, die nachträglich „verortet“ wurden, liefern weiterhin keine Location-Informationen.
So geht´s:
Rechte abfragen
Um Zugriff auf die Daten zu erhalten, kann in verschiedenen Stufen Rechte abgefragt werden:
- user_photos / friends_photos – Für die eigenen Bilder bzw. Bilder von Freunden
- user_status / friends_status – Für Beiträge bzw. Beiträge von Freunden (Beiträge mit Bildern enthalten keine Location Information, sofern nicht die user_photos Permission abgefragt wurde)
- user_checkins / friends_checkins – Weiterhin können natürlich die Checkins abgerufen werden. Alle „normalen“ Beiträge/Bilder liefern in diesem Fall keine Location-Information. Achtung: Sofern die user_status Permission abgerufen wurde, ist das Abfragen der user_checkins Permission überflüssig. Der Nutzer erhält in diesem Falle bei der App-Installation die Anzeige „Deine Besuche“ & „Deine Statusmeldungen“, das Endergebnis (per https://graph.facebook.com/me/checkins) ist jedoch dasselbe.
Posts per Graph API lesen
Die einfachste Methode um an Beiträge mit Location-Information zu kommen ist über die Graph API URL:
https://graph.facebook.com/me/locations
Als Antwort erhält man das klassische Beitrags-Feed erweitert um einen Place pro Post. Der Place stellt üblicherweise folgende Infos bereit: Place ID, Name, Street, City, Country, Zip, Latitude, Longitude.
Die URLs /home, /feed und /posts könnt ihr um den Parameter with=location erweitern, um nur Beiträge mit Location zu erhalten:
https://graph.facebook.com/me/posts/?with=location
Des weiteren können Beiträge, in denen der Nutzer markiert wurde abgerufen werden:
https://graph.facebook.com/me/tagged?with=location
Ein Zugriff gezielt auf Bilder per ist wie bereits erwähnt (noch) nicht möglich:
https://graph.facebook.com/me/photos?with=location
Abfrage per FQL
Erweiterte Abfragen können per FQL über die Tabelle „location_post“ durchgeführt werden. Um beispielsweise alle Posts eines Place zu erhalten, kann folgende Abfrage gestartet werden:
SELECT id, author_uid, tagged_uids, timestamp, coords, type FROM location_post WHERE page_id=172892789426301
Ein weiteres Beispiel, alle Beiträge in denen ein Nutzer markiert wurde:
SELECT author_uid, page_id FROM location_post WHERE (USER_ID*) in tagged_uids
*: USER_ID -> Durch Facebook User ID ersetzen.
Posts nach Koordinaten finden …
Über FQL kann keine Abfrage über die Koordinaten gestartet werden. Hierzu stellt Facebook neue Such-Optionen zur Verfügung. Beispiel:
https://graph.facebook.com/search?type=location¢er=48.141349,11.552982&distance=3000
Diese Abfrage stellt alle Location Aktivitäten eurer Freunde rund um den Münchner HBF dar.
Beiträge mit Location-Information veröffentlichen (+ Freunde markieren)
Wie bereits aus den Open Graph Actions bekannt können nun auch Posts über die Graph API mit Freunden oder Places markiert werden. Hierzu wie gewohnt einen Beitrag veröffentlichen und das Argument „place“ (ID des Facebook Place) und/oder „tags“ (Kommagetrennte IDs der Freunde) hinzufügen.
Fazit: (Keine) halben Sachen
Das Update ist massiv und enttäuschend zugleich. Noch nie war es für Dritt-Entwickler so gut möglich mit Orts-Informationen zu interagieren. Der Zugriff auf Geo-Infos von Bildern fehlt jedoch komplett. Je nach Nutzerverhalten kann dies bedeuten, dass (schätzungsweise) lediglich 70-30% der eigentlich verfügbaren Geo-Infos ausgelesen werden können, der Rest bleibt im verborgenen. Für Anwendungen, die beispielsweise eine Reise-History zur Verfügung stellen möchten, fehlt eine große Anzahl an nützlichen Beiträgen, auch der Nutzer wird sich sicherlich über die Differenz zwischen in der Anwendung verfügbaren Daten und seiner Map im Profil wundern.
Höchst wahrscheinlich ist dies keine technische Frage, sondern eine strategische Entscheidung: Über die Beschneidung der Daten behält sich Facebook einen Wettbewerbsvorteil gegenüber Dritt-Entwicklern vor. Dies öffnet unter Anbetracht der neuen Monetarisierungsmodelle der facebook fmc einen weiteren Weg für Premium-Dienste.