Kleines Spiel für zwischendurch
Verbindung mit PHP
Geben Sie bei Connect URL einen Wert an.
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:
Codebeispiel:<?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: Codebeispiel: Codebeispiel: Codebeispiel:
Der Name des Benutzers erscheint. Codebeispiel:
$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>
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
Mehr über... 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
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.
Inhaltsverzeichnis
- Teil 1 Facebook-Anwendungen in Webseiten integrieren
- Teil 2 Verbindung mit PHP


