Übersicht

Die Graph API ist die gängigste Methode, mit der du Daten in die Facebook-Plattform einliest und daraus abrufst. Dabei handelt es sich um eine einfache HTTP-basierte API, mit der du programmgesteuert Daten abfragen, neue Meldungen posten, Werbeanzeigen verwalten, Fotos hochladen und zahlreiche andere Aufgaben ausführen kannst.

Die Grundlagen

Die Graph API erhält ihren Namen vom Konzept eines „Social Graphs“, einer Darstellung der Informationen auf Facebook. Sie besteht aus Folgendem:

  • Nodes: kurz gesagt, einzelne Objekte wie Nutzer, Fotos, Seiten, Kommentare, die auf Facebook angezeigt werden
  • Edges: Verbindungen zwischen einer Sammlung von Objekten und einem einzelnen Objekt, z. B. Fotos auf einer Seite oder Kommentare zu einem Foto
  • Felder: Daten zu einem Objekt, z. B. der Geburtstag eines Nutzers oder der Name einer Seite

Normalerweise verwendest du Nodes, um Daten über ein spezifisches Objekt abzurufen; du verwendest Edges, um Sammlungen von Objekten zu einem einzelnen Objekt abzurufen; und du nutzt Felder, um Daten zu einem einzelnen Objekt oder einzelnen Objekten in einer Sammlung abzurufen.

HTTP

Die Graph API ist HTTP-basiert und funktioniert daher mit jeder Sprache, die eine HTTP-Bibliothek aufweist, beispielsweise cURL und urllib. Das heißt, du kannst die Graph API direkt in deinem Browser verwenden. Wenn du beispielsweise die folgende URL in deinem Browser abrufst...

https://graph.facebook.com/facebook/picture?redirect=false

... entspricht dies der cURL-Abfrage:

curl -i -X GET \
 "https://graph.facebook.com/facebook/picture?redirect=false&access_token={valid-access-token-goes-here}"

Zugriffsschlüssel

Wahrscheinlich sind dir der access_token-Parameter und der Platzhalterwert in der cURL-Abfrage oben aufgefallen. Die meisten Anfragen an die Graph API erfordern einen Zugriffsschlüssel. Du solltest natürlich mit der Funktionsweise von Zugriffsschlüsseln vertraut sein. Lies dazu unsere Dokumentation zu Zugriffsschlüsseln. Für den Moment ist allerdings nur Folgendes wichtig:

  • Die meisten Anfragen an die Graph API erfordern einen bestimmten Zugriffsschlüssel und
  • am einfachsten ist es, Facebook Login zu implementieren, um Zugriffsschlüssel abzurufen

Die Beispiele für Pseudocode-Anfragen/Antwort-Beispiele in unserer Graph-API-Dokumentation verweisen nicht explizit auf einen Zugriffsschlüssel. Du solltest aber davon ausgehen, dass ein Zugriffsschlüssel in der Anfrage enthalten war, um eine Antwort bekommen zu können.

Struktur

Wir stellen die Struktur im Abschnitt Verwenden der Graph API ausführlich vor. Allgemein lässt sich Folgendes feststellen:

  • Du verwendest Nodes, um Daten zu einzelnen Objekten abzurufen
  • Du verwendest Edges, um Sammlungen von Objekten abzurufen, die mit einem Node verbunden sind, oder um Objekte in diesen Sammlungen zu veröffentlichen
  • Du verwendest Felder, um anzugeben, welche Daten in deinen Antworten enthalten sein sollen

Host-URL

Fast alle Anfragen werden an die Host-URL graph.facebook.com übergeben. Die einzige Ausnahme sind Video-Uploads, die graph-video.facebook.com verwenden.

Objekt-IDs

Nodes sind einzelne Objekte, wobei jedes über eine eigene ID verfügt. Um Informationen über einen Node zu erhalten, kannst du eine direkte Anfrage an seine ID senden. Die offizielle Facebook-Seite hat beispielsweise die ID 20531316728. Du kannst über diese ID eine direkte Anfrage senden:

GET graph.facebook.com
  /20531316728

Wenn du spezifische Daten (so genannte Felder) zu einem Node abrufen möchtest, kannst du den fields-Parameter einbinden und angeben, welche Felder in der Antwort zurückgegeben werden sollen. Ein kurzer Blick in die Referenz zum Node für die Seite zeigt, dass eines der Felder, die du beim Lesen des Seitenobjekts abrufen kannst, das cover-Feld ist. Es handelt sich dabei um das Titelbild der Seite. Die entsprechende Abfrage würde wie folgt aussehen:

GET graph.facebook.com
  /20531316728?fields=cover

Die meisten Nodes verfügen über Edges, die Sammlungen von Objekten zurückgeben, die mit diesem Node verknüpft sind. Für die Abfrage einer Edge kannst du sowohl die Node-ID als auch den Namen der Edge verwenden. Eine der Edges, die in der Referenz zum Node für die Seite angegeben ist, ist die Edge photos. Sie gibt alle Foto-Objekte zurück, die zur Seite gehören. Um also alle Fotos abzurufen, die zur Facebook-Seite gehören, fragst du die Edge photos des Nodes ab:

GET graph.facebook.com
  /20531316728/photos

In einigen Nodes kannst du Felder über POST-Vorgänge aktualisieren. Angenommen du bist der Administrator der Facebook-Seite: Du könntest das Feld description wie folgt aktualisieren:

POST graph.facebook.com
  /20531316728?description=The%20OFFICIAL%20Facebook%20Page

In Edges lassen sich in der Regel neue Objekte in den Sammlungen des Nodes veröffentlichen, indem du POST-Vorgänge ausführst. Es folgt ein Beispiel zur Veröffentlichung eines Fotos für die Sammlung von Fotos, die der Facebook-Seite gehören:

POST graph.facebook.com
  /20531316728/photos

Natürlich sind für das Veröffentlichen eines Objekts in einer Sammlung normalerweise zusätzliche Felder über dieses Objekt erforderlich, beispielsweise die URL eines Fotos oder ein Titel bzw. eine Beschreibung. In der Referenzdokumentation für die Edge findest du einen Überblick, welche Felder erforderlich und welche optional sind.

Außerdem lässt sich ein Node normalerweise löschen, indem du für die Objekt-ID einen DELETE-Vorgang ausführst:

DELETE graph.facebook.com
  /20531316728

Versionen

Für die Graph API sind mehrere Versionen verfügbar. In unserem Leitfaden zur App-Version erfährst du mehr über die Versionierung, aber hier erläutern wir, wie du eine bestimmte Version der Graph API aufrufst.

Ganz einfach: Du fügst lediglich den Buchstaben v gefolgt von der Versionsnummer an den Anfang des Anfragepfads. Hier siehst du einen Beispielaufruf für Version 2.9:

GET graph.facebook.com
  /v2.9/20531316728/photos

Wenn du keine Versionsnummer einbindest, wird standardmäßig die älteste verfügbare Version verwendet. Aus diesem Grund empfiehlt es sich, eine Versionsnummer in deinen Anfragen anzugeben.

Im Änderungsprotokoll der Graph API sind alle verfügbaren Versionen angegeben. In unseren Referenzdokumenten kannst du den Content nach Version filtern.

Nächste Schritte

Kommen wir nun zur Verwendung der Graph API. Wir sehen uns einige komplexere Anfragen und deren Antworten an und du erfährst, welche anderen Handlungen du mit der Graph-API ausführen kannst.