Vor einigen Tagen haben wir gezeigt, wie auf Facebook-Seiten neue Tabs/Reiter mit einer iFrame Anwendung erstellt werden können, welche bisher mit FBML (Facebook Markup Language) implementiert wurden. Auch mit dem Einbau als iFrame hat man die Möglichkeit, verschiedene Inhalte anzuzeigen, je nachdem ob der Besucher ein „Fan“ der Seite ist oder nicht. In diesem Artikel wird gezeigt, wie man solche Inhalte speziell für Fans erstellt. Diese können beispielsweise für spezielle Aktionen oder ähnliche Fälle verwendet werden.
Benötigte Daten von den iFrame Tabs bekommen
Klickt ein Facebook-Benutzer auf einen der erstellen iFrame Reiter (auch Tabs genannt), lädt Facebook den angeforderten Inhalt in einem iFrame in die Seite. Bei diesem Ladevorgang werden bestimmte Informationen über die Seite und den Benutzer übergeben. Diese Daten werden in einer Variablen mit dem Namen „signed_request“ gespeichert und enhalten folgende Informationen:
- Die Seiten-ID der Seite, auf welcher der geklickte Reiter eingebunden ist
- Ob der eingeloggte Benutzer ein Fan dieser Seite ist
- Ob der eingeloggte Benutzer ein Admin dieser Seite ist
- Das Land des Benutzers
- Sprachdefinitionen des Benutzers
Um in unserer File, welches im iFrame angezeigt wird, an diese Informationen zu kommen, kann das Facebook PHP Software Develper Kit (SDK) verwendet werden. Wie der Name schon sagt muss für diese Variante auf dem benutzten Webserver zum einen PHP verfügbar sein, und zum andern muss es sich beim eingebunden File um eine .php-Datei handeln. Wer also als Inhaltsdatei für das iFrame eine .html-Datei erstellt hat, kann diese einfach in eine .php-Datei umbenennen und diese in der iFrame Anwendung entsprechend anpassen. Ist auf dem Webserver kein PHP installiert, existiert auch eine Javascript-Lösung, auf welche hier aber nicht eingegangen wird. Anmerkung: Die Facebook PHP SDK benötigt PHP5.
Als erstes wird also das Facebook Software SDK heruntergeladen und entzippt. Die benötigte Datei heisst facebook.php und befindet sich im Source-Verzeichnis „src“. Dieses wird nun per FTP auf den Webserver hochgeladen – mit Vorteil in das gleiche Verzeichnis, in dem auch unsere anderen Files liegen, welche wir für das iFrame erstellt haben.
Nun wird das File in unserer php-Datei per require geladen und die SDK initialisiert. Dazu wird folgender Code in unsere index.php Datei eingefügt:
<? require 'facebook.php';
$app_id = "Anwendungsnummer";
$app_secret = "Anwendungs-Geheimcode";
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
?>
Die zwei Variablen Anwendungsnummer und Anwendungs-Geheimcode müssen mit den entsprechenden Werten aus der iFrame-Anwendung gefüllt werden. Diese finden sich auf der Seite www.facebook.com/developers, indem man dort auf die entsprechende Anwedung klickt.
Nun können die einzelnen Informationen über einen Array abgerufen und entsprechenden Variablen zugewiesen werden:
$signed_request = $facebook->getSignedRequest();
$seiten_id = $signed_request["page"]["id"];
$seiten_admin = $signed_request["page"]["admin"];
$like_status = $signed_request["page"]["liked"];
$land = $signed_request["user"]["country"];
$sprachdefinition= $signed_request["user"]["locale"];
Wenn wir jetzt diese Variablen einmal ausgeben, sehen wir folgendes Bild.
Mit diesen Variablen und einigen PHP Kenntnissen kann man nun also nach Belieben Schleifen und Bedingungen programmieren.
Inhalte nur für Fans sichtbar machen
Den Fan-Status kann man beispielsweise dazu benutzen, Inhalte nur für Fans sichtbar zu machen. Dazu wird eine einfache If Else Statement verwendet:
if ($like_status) {
echo "Inhalt nur für Fans";
}
else {
echo "Inhalt nur für nicht-Fans";
}
Mit einem solchen Statement hat man also ebenfalls wieder die Möglichkeit, spezielle Inhalte für Fans zu kreieren, welche man bis anhin mit FBML implementiert hat.
Quellenangabe: Dieser Artikel basiert auf dem Artikel „Customizing your Facebook iFrame Application – Reveal Tabs Fan-gating & Other Cool Stuff“ von HyperArts und ist eine freie Übersetzung von bestimmten Themen dieses Beitrags.
Du schreibst, es gibt auch eine Lösung ohne php?
Hast du einen Tipp, wo das beschrieben?
Eine konkrete Lösung oder Quelle dafür kenne ich leider nicht, und hab es auch noch nie versucht. Da die Parameter aber in einem JSON-Objekt übermittelt werden, würde ich einmal nach „Dekodierung von JSON mit Javascript“ suchen. Auf die schnelle hab noch nichts passendes gefunden, wenn ich noch was finde, werde ich es aber hier posten.
Danke Christoph für diese Artikel.
Ich habe ewigkeiten gebraucht, bis ich endlich herrausgefunden habe, wie meine Seite mitbekommt, ob jemand Fan der Seite ist oder nicht.
Der Artikel hat mich super unterstützt.
Danke
Klasse, vielen Dank für den Artikel!
Kam genau zum richtigen Moment 😉
Hallo,
danke für den Beitrag. Ich habe bisher leider erfolglos nach einer Möglichkeit gesucht Fans und Nicht-Fans zu filtern. – Leider klappt es auch bei dieser Lösung nicht. 🙁
Ich habe das aktuelle PHP SDK (3.0) heruntergeladen. Auch die Example-Datei die dort mitgeliefert wird funkioniert leider nicht so wie ich mir das dachte.
Es ist mir einfach nicht möglich über die Anwendung/Reiter (?) herauszufiltern, ob der Besucher meiner FanPage (Reiter/iFrame) ein Fan ist oder nicht.
Ich verstehe auch irgendwie diesen Bezug von der Anwendung zur FanPage nicht.
Die Anwendung hat selber ja auch eine Page, auf der Jeder „Gefällt mir“ klicken kann.
Sicherlich kann ich mit der oben genannten Methode dann herausfinden, ob er Fan von der Anwendungs-Page ist.
Aber auf einer anderen Fanpage, wo der Reiter nur eingebunden ist, scheint das wohl nicht zu klappen?
Oder bin ich irgendwie total durcheinander?
Wäre für eine Aufklärung sehr dankbar 🙂
Hallo Chris
Die Anwendung wird nur gebraucht, um den Reiter in die gewünschte Facebook-Seite einzubauen. Die Anwendungspage muss dich bei diesem Einsatz nicht mehr kümmern, und deine Besucher sollten diese Anwendungspage auch nicht zu sehen bekommen.
Unterschieden, bezüglich Fan/nicht Fan wird nur dadurch, ob der Besucher Fan der Facebook-Seite ist, wo der Reiter eingebunden wurde.
Wieso es bei dir nicht klappt, ist leider so aus der Ferne schwierig zu sagen. Ich würde dir aber einmal empfehlen, die Seite mit einem anderen Account zu testen (z.B. einen Freund zu bitten, zu schauen, ob die Filterung klappt). Bei uns ist es auch so, dass ich mit meinem eigenen Account nur die Seite für „nicht Fans“ angezeigt bekomme, auch wenn ich Fan der Seite bin. Wenn wir die Seite aber mit einem anderen Account testen, klappt alles bestens.
Kann ich mit der php-Datei auch auf meiner Homepage (da wo auch die Dateien liegen) auslesen, ob unsere Facebook Seite gelikt wurde? Wenn ja: Wie verknüpfe ich unsere Facebookseite bzw. in welcher Zeile kann ich unsere Daten hinterlegen?