Facebook API

Verbindung mit PHP

image.jpg

© Internet Magazin

Geben Sie bei Connect URL einen Wert an.

Das Gros der Logik unserer BFFOracle-Anwendung ist in PHP geschrieben, weswegen wir zur Integration in unsere eigene Website auch PHP-Code benötigen. Ausgangsbasis sind die im vorherigen Artikel zu Facebook erstellten Klassen, insbesondere die Dateien BFFOracle.php (die eigentliche Logik) sowie config.inc.php (wo Sie Daten wie etwa API-Schlüssel und das Passwort eintragen müssen).Außerdem benötigen wir die PHP-Klassen von Facebook(http://developers.facebook.com/clientlibs/facebook-platform.tar.gz). Im Archiv steckt der Ordner facebook-platform, den Sie direkt ins Anwendungsverzeichnis entpacken. Alle Verzeichnisse im Unterordner facebook-platform/php (inklusive des Verzeichnisses jsonwrapper) kopieren Sie dann in das Anwendungsverzeichnis. Der folgende Code im Seitenkopf initialisiert die Anwendung:

<?php require_once 'facebook.php'; require_once 'config.inc.php'; require_once 'BFFOracle.php'; $fb = new Facebook(BFF_KEY, BFF_PWD); // ... ?>

Die nächsten Schritte sind analog zu vorher: Laden Sie am Ende der Seite die Skriptdatei FeatureLoader.js.php vom Facebook-Server und rufen Sie FB.init() auf. Als Nächstes versuchen wir über die Facebook-API den aktuell eingeloggten Nutzer zu ermitteln:

$user = $fb->get_loggedin_user();

Haben wir einen Nutzer, rufen wir die Funktionalität der Anwendung ab. Falls nein, geben wir wieder einen Login-Button aus. Der Wert des Attributs onlogin hat sich allerdings geändert: Die Seite wird dann neu geladen, damit der PHP-Code die Anwendungslogik ausführen kann. Beachten Sie, dass Sie für den folgenden Code auch wieder den fb-Namespace im <html>-Tag angeben müssen.

<?php if ($user) { // ... } else { ?><fb:login-button onlogin="location. reload();"></fb:login-button><?php } ?>

Erkennt die Facebook-API dagegen einen Nutzer, rufen wir unsere Anwendungsfunktionalität auf, um den/die BFF des Anwenders zu ermitteln und dann samt Profilfoto auszugeben. Das Gros der Logik ist ja bereits in der PHP-Klasse BFFOracle implementiert; wir zapfen das jeweils nur an:

<?php // ... $bff = new BFFOracle($fb, $user); $uid = $bff->getBFF(); $data = $fb->api_client-> users_getInfo($uid, 'first_name, last_name, pic'); $pic = $data[0]['pic']; $name = $data[0]['first_name'] . ' ' . $data[0]['last_name']; ?><h2>You BFF is <?php echo $name; ?>. </h2><p><img src="<?php echo $pic; ?>" title="<?php echo $name; ?>" /></p>

image.jpg

© Internet Magazin

Der Name des Benutzers erscheint.

Bei bestimmten Anwendungsszenarien kann es allerdings passieren, dass Sie eine Fehlermeldung in Form einer PHP-Exception erhalten: "Session key invalid or no longer valid". Das ist eine Beschränkung der Methode get_loggedin_user(), die aus dem Tritt kommen kann, wenn man sich in einem Fenster in eine Anwendung einloggt und dann in einem anderen Fenster aus Facebook wieder ausloggt.Der gebräuchlichste Workaround stammt von cutfromthenorth.com/handling-session-key-invalid-or-no-longer-valid-errors-from-facebook/ und fängt die Exception einfach ab. Tritt eine Ausnahme auf, wird mit clear_cookie_state() die noch vorhandene Session gelöscht. Auf unser Beispiel umgemünzt führt das zu folgendem Code:

<div id="BFF"><?php if ($user) { try { $bff = new BFFOracle($fb, $user); // ... } catch (Exception $ex) { $fb->clear_cookie_state(); unset($user); } } else { // ... } ?></div>

Jetzt funktioniert die Anwendung wie gewünscht: Nach kurzer Zeit wird ein Kontakt samt Foto (sofern vorhanden) ausgegeben. Der Algorithmus basiert allerdings nicht wirklich auf wissenschaftlichen Erkenntnissen, sondern sucht einfach von zufällig ausgewählten Kontakten denjenigen aus, der die ähnlichste Schreibweise hat. Übereinstimmungen beim Vornamen beispielsweise erhöhen die Chancen auf gegenseitige Sympathie in erheblichem Maße.

Troubleshooting

Link-Tipps

Entwicklerbereich bei Facebook    http://developers.facebook.com/ Tools für Entwickler    http://developers.facebook.com/tools.php API-Dokumentation    http://wiki.developers.facebook.com/index.php/API Wiki für Entwickler    http://wiki.developers.facebook.com/index.php/Main_Page Das SDK für PHP    http://developers.facebook.com/clientlibs/facebook-platform.tar.gz Doku zu Facebook Connect    http://developers.facebook.com/connect.php

Facebook Connect ist ein durchdachtes Konzept, allerdings fällt das Debugging teilweise schwer. Damit es bei Ihnen im Projekt nicht kurz vor Deadline zu unerklärlichen Phänomenen kommt, folgen einige Tipps für typische Fehler. Stets eliminiert müssen etwaige Tippfehler - etwa im Dateinamen der Cross-Domain-Datei sowie im HTML-Markup. Andernfalls weist möglicherweise der FBML-Parser Seiteneffekte auf.Des Weiteren ist es ein Muss, mit einem Tool wie Firebug (http://getfirebug.com ) oder Fiddler (http://fiddler2.com ) den HTTP-Verkehr zu beobachten. Facebook fragt nämlich unter anderem den aktuellen Status des Benutzers ab. Dabei werden auch die Cross-Domain-Datei sowie die Einstellung Connect URL überprüft. Fängt der Pfad zu ersterer Datei nicht mit letzterer URL an, gibt es einen Fehler, der aber nur bei Beobachtung der per HTTP übertragenen Daten sichtbar ist.Facebook Connect ist eine tolle Möglichkeit, um seine eigene Webanwendung mit Facebook zu verwenden - und wir haben erst einen Teil der Features kennen gelernt. Wie immer gelten die üblichen Einschränkungen: Nur Facebook-Nutzer haben etwas von den Funktionalitäten, und Javascript ist absolut Pflicht.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
Ben Stiller Owen Wilson Zoolander Hansel
Vorschau auf Film- und Serien-Highlights

Prime Instant Video lockt im September mit Highlights wie "Zoolander 2", "Die Tribute von Panem – Mockingjay 2" und der neuen Staffel von "Mr.…