0251 / 590 837 15
info@a-coding-project.de

Facebook PHP-SDK Beispiel auf Deutsch

Das Beispiel der Facebook-PHP-SDK ist leider auf Englisch. So sind neben den hilfreichen Kommentaren auch die Dialoge nicht auf Deutsch! Wer noch nicht so weit ist: Facebook SDK installieren.

In diesem Artikel möchte ich zunächst die einzelnen Teile des Beispiels (example.php) durchgehen und ganz am Ende einen Download zur deutschen Version anbieten.

Facebook-Objekt erstellen

Der Zugriff auf die SDK erfolgt immer über ein Objekt der Klasse Facebook. Ihm werden die API-Daten übergeben:

$facebook = new Facebook(array(
  'appId'  => 'Deine Anwendungs-Id',
  'secret' => 'Dein Anwendungs-Geheimcode',
  'cookie' => true,
));

Sitzungsdaten auslesen

Über die getSession-Funktion können wir uns die Daten der aktuellen Sitzung des Benutzers auslesen. Dazu gehören:

  1. Die Benutzerid (uid)
  2. Ein geheimer Schlüssel der Sitzung, welchen wir brauchen, wenn wir über JavaScript mit Facebook interagieren. (access_token)
  3. Ablaufdatum der Sitzung (expires)
  4. Prüfsummer (Signatur) der Sitzung

Die Session holen wir uns folgendermaßen:

$session = $facebook->getSession();

Wenn der Benutzer nicht eingeloggt ist liefert die Funktion false zurück.

Benutzerdaten auslesen

Genau das wird beim Auslesen der Benutzer überprüft. Ist das Benutzer eingeloggt können wir uns mit der getUser-Funktion die aktuelle ID des Benutzers holen.

if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

Mit der Funktion api kann man die Daten aus der API auslesen. Den übergebenen Part ähnelt der Verzeichnisstruktur eines Dateisystems. Das Hauptobjekt ist meistens der Benutzer. me beschreibt hier den gerade eingeloggten Benutzer. Die Abfrage kann man zum Beispiel noch um Bilder oder Ähnlichem erweitern. Das werden wir aber in einem weiteren Artikel besprechen.

Weiter unten findet man auch eine Abfrage des Benutzers Naitik. Das ist einfach ein Beispielbenutzer mit öffentlichen Profil.

Login / Logouturl festlegen

Im Beispiel wird festgelegt, ob ein Login- oder Logoutbutton angezeigt werden soll. Dabei wird einfach geprüft, ob die Userdaten abgefragt werden konnten – sprich ob das $me-Objekt gefüllt ist:

if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

JavaScript Verbindung

Wenn die serverseitige Verbindung steht können wir uns dem Client zuwenden. Facebook benötigt ein div, um bestimmte Sachen zwischenzuspeichern. Im Beispiel heißt dies fb-root. Zunächst müssen die JavaScriüt-Dateien von Facebook abgeholt werden. Im Englischen-Beispiel ist in der Url ein en_US. Für die deutsche Version können wir hieraus de_DE machen:

(function() {
  var e = document.createElement('script');
  e.src = document.location.protocol + '//connect.facebook.
          net/de_DE/all.js';
  e.async = true;
  document.getElementById('fb-root').appendChild(e);
}());

Beim inizialisieren des Facebook-Scripts müssen noch bestimmte Einstellungen vorgenommen werden. Zum Einen müssen wir die Anwendungsid und die Session angeben. Zum Anderen können wir prüfen lassen, dass der User eingeloggt sein soll, das Cookies benutzt werden sollen und ob XFBML benutzt wird. Zur Erinnerung: Das ist eine HTML-Erweiterung für bestimmte Facebook-Oberflächen.

Im Beispiel wird noch ein Event nach dem Login registriert. Wenn sich also der User einloggt, soll die Seite neu geladen werden:

window.fbAsyncInit = function() {
  FB.init({
    appId   : '<?php echo $facebook->getAppId(); ?>',
    session : <?php echo json_encode($session); ?>, // lade die 
                                     Session nicht neu, wenn das schon 
                                     durch PHP passiert ist
    status  : true, // Prüfe Login-Satus
    cookie  : true, // Aktiviere Cookies um dem Server Zugriff zur 
    Session zu erlauben
    xfbml   : true // Erlaube XFBML
  });

  // Wenn sich der Benutzer einloggt wird die Seite neu geladen
  FB.Event.subscribe('auth.login', function() {
    window.location.reload();
  });
};

Testausgaben

Die weiteren Sachen im Beispiel sind nicht weiter nennenswert. Ich möchte diese verteilt auf spätere Artikel genauer erklären. Das wichtigste ist aber der Inhalt im $me-Objekt.

Download deutsche Version

SDK-Beispiel auf deutsch

Kommentare

Stefan schrieb am 13.06.2011:

Hallo Stevie, leider scheitere ich schon am ersten Befehl: Fatal error: Call to undefined method Facebook::getsession() in /meinProvider/fkalender/examples/index.php on line 18 Das php-sdk habe ich installiert. Woran kann das liegen?

Stefan Wienströer schrieb am 13.06.2011:

Hi, versuch mal Facebook:getSession()

Stefan schrieb am 13.06.2011:

Egal ob groß oder klein... hatte schon beides versucht. Wenn ich die Zeile auskommentiere wird das Beispiel angezeigt, aber das login funktioniert nicht.

Stefan schrieb am 13.06.2011:

Gefunden! getSession gibt es mit v3.x nicht mehr. Ich habe jetzt die Version 2.2.2 des php-sdk installiert und es funktioniert.

Stefan Wienströer schrieb am 13.06.2011:

dann schau mal in die Facebook-Klasse selbst rein. Vielleicht heißt die mittlerweile anders.

Stefan schrieb am 13.06.2011:

Die Api hat sich anscheinend ziemlich geändert. Da ich zur Zeit in der "Forschung und Schulung"-Phase bin, genügt mir auch die alte Api. Vielen Dank für Deine tollen Blog!

Ben schrieb am 20.01.2013:

Hi, ich steh grad etwas aufm Schlauch. Wie kann ich jetzt aus diesem Beispiel ein Fangate machen? Also wo lege ich fest, welche Seite aufgerufen wird, nachdem man geliked hat oder habe ich das Skript missverstanden? Danke und LG

Stefan Wienströer schrieb am 21.01.2013:

Hallo Ben, der Liebe Button hat nichts mit der SDK zu tun. Dort bleibst du ja auf der gleichen Seite. Gruß Stefan