Vor kurzem hatten wir über die Abfrage von Location Tags per Graph API berichtet. In unserem Artikel bemängelten wir den fehlenden Zugriff auf Location Daten von Bildern. Mit dem heutigen Update gilt diese Ausnahme nicht mehr: Wird ein Bild mit einem Place markiert, so ist diese Information nun verfügbar.
Abfrage per FQL und Graph API
Um die ID eines Places zu erhalten kann eine einfache FQL Abfrage gestartet werden. {OBJECT_ID} ist hierbei dies ID des Bildes:
SELECT place_id FROM photo WHERE object_id={OBJECT_ID}
Ebenso einfach wie die Abfrage ist die Antwort:
{ "data": [ { "place_id": {PLACE_ID} } ] }
Details zum Place müssen in einem 2. Schritt per Graph API ausgelesen werden:
https://graph.facebook.com/{PLACE_ID}
Detailierte Infos zum Place – inkl. dem restlichen Overhead – gibt es bei der Abfrage per Graph API
https://graph.facebook.com/{PHOTO_ID}
In der Antwort sind gleich die Geo-Informationen enthalten:
... "place": { "id": "145673775505280", "name": "Sentry Conference Center 730 3rd Ave # 17 New York, NY 10017", "location": { "city": "New York", "state": "NY", "country": "United States", "latitude": 40.75293, "longitude": -73.973 } } ...
Weiterhin nicht möglich ist die Abfrage über die Graph API mit dem Parameter „with=location“:
https://graph.facebook.com/me/photos?with=location
„Alles auf einen Schlag“
Um alle Bilder mit Location auf einen Schlag auszulesen, muss etwas in die FQL-Trickkiste gegriffen werden. Über einen Sub-Query lesen wir erst alle Alben IDs des aktuellen Nutzers aus, im Anschluss starten wir einen weiteren Sub-Query auf den Photo Table mit diesen IDs sowie einer „größer Null“ Bedinung für die Place ID. Zu guter Letzt noch die Abfrage auf den Place Table um die Geo-Informationen zu erhalten:
SELECT name, geometry, latitude, longitude, checkin_count FROM place WHERE page_id IN ( SELECT place_id FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner = me() LIMIT 5) AND place_id > 0 LIMIT 5)
In unserem Beispiel haben wir Limits angefügt, ansonsten kann es sein, dass die Antwort etwas auf sich warten lässt.
Für eine Einführung ins Thema sowie das Thema „Rechteabfrage“ bitte unseren Artikel „Abfrage von Location Tags nun per Graph API möglich“ zur Hand nehmen.