Facebook Real-Time Updates einfach erklärt

Real-Time Updates ermöglichen es Entwicklern sich von Facebook informieren zu lassen, sobald sich im Open-Graph etwas ändert. Um Real-Time Updates zu empfangen muss eine Facebook App angelegt werden, um die Updates in den App-Einstellungen zu konfigurieren. Real-Time Updates können nur von Open Graph Objekten abonniert werden, die auch in Verbindung mit der zuvor angelegten App stehen. D.h. es können z.B. Änderungen am Newsfeed einer Fanpage empfangen werden, wenn meine App zuvor auf der Fanpage als Tab installiert wurde (der Tab muss nicht zwangsläufig sichtbar sein, um Updates zu empfangen).

Open Graph Objekte mit Real-Time Benachrichtigungen

Von folgenden Objekten können Updates empfangen werden:

Bei diesen Objekten ist zu beachten, dass nicht alle Attribute „beobachtet“ werden können. Facebook sendet Updates über folgende Attribute: feedfriendsactivitiesinterestsmusicbooksmoviestelevisionlikescheckinslocationevents

Wie richte ich Real-Time Updates in meiner App ein?

Innerhalb der App Konfiguration findet man unter dem Menüpunkt „Settings > Real-Time-Updates“ die entsprechenden Einstellungen. Zuerst muss festgelegt werden, welches Objekt beobachtet werden soll. Weitere Einstellungen sind die Felder, die von Facebook bei einem Update gesendet werden, die Url an die der POST-Request abgesetzt wird sowie ein Token.

Quelle: https://developers.facebook.com/docs/reference/api/realtime/

Wie empfange ich von Facebook Real-Time Updates?

Im ersten Schritt muss eine Verifizierung des Abonnements zwischen Callback-Server und Facebook-Server durchgeführt werden. Dieser Schritt erfolgt einmalig. Dazu sendet Facebook 3 GET-Parameter an die Callback-Url. Folgende Parameter werden von Facebook übermittelt:

  • $_GET['hub_mode']
  • $_GET['hub_challenge']
  • $_GET['hub_verify_token']

Info: Für andere Programmiersprachen als PHP heißen die Parameter hub.mode, hub.challenge und hub.verify_token. Der Callback-Server sollte nun den Verify Token mit dem in der App konfigurierten (oben my_code_123) abgleichen. So kann der Callback-Server feststellen, dass die Anfrage auch von Facebook kommt. Als Antwort auf Facebook’s GET-Request muss der Parameter $_GET[‚hub_challenge‘] 1:1 zurückgegeben werden. Er ist ein zufällig von Facebook erzeugter String. Das Abonnement ist nun bestätigt und Facebook sendet Daten. 🙂

Und los geht’s – Schick mir Daten Facebook!

Ist das Real-Time Daten Abo bestätigt sendet Facebook bei jeder abonnierten Änderung einen POST-Request an die Callback Url. In PHP können die Daten wie folgt in einen Array geparst werden:

[code lang=’php‘]$data = file_get_contents("php://input");
$json = json_decode($data, true);

[/code] Die drei vorherigen GET-Parameter werden nicht mehr mitgesendet. Die von Facebook gesendeten Daten sehen wie folgt aus (hier im JSON-Format):

[code]{
  "object": "user",
  "entry": [
    {
      "uid": 1335845740,

      "changed_fields": [
        "name",
        "picture"
      ],
      "time": 232323
    }, {
      "uid": 1234,
      "changed_fields": [
        "friends"
      ],
      "time": 232325
    }
  ]
}

[/code]

Fazit

Real-Time Subscriptions sind eine gute Möglichkeit für Entwickler auf Änderungen im Open Graph zu reagieren. So können z.B. Benachrichtigungen an Nutzer versandt werden, sobald dieser etwas zu einem bestimmten Thema auf seiner Timeline postet. Oder Sie können Fanpage Administratoren via Push-Nachricht über Neuigkeiten auf ihrer Fanpage informieren. Real-Time Updates bieten Entwicklern neue und unkomplizierte Möglichkeiten auf Änderungen im Open-Graph zu reagieren, ohne eigene performancefressende Cron-Jobs laufen zu lassen.


Facebook

Sebastian Buckpesch ist Gründer und technischer Geschäftsführer der App-Arena GmbH. Der Diplom Wirtschaftsinformatiker und zertifizierte AWS Solution Architect entwickelt mit seinem Team die IT-Plattform App-Manager sowie zahlreiche Web-basierte App-Projekte. Zu seinem Interessensgebieten zählt Cloud- und Serverless Architektur sowie neuste IoT- und BigData-Trends.