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

Mean.io aggregate assets in the correct order

Im working with mean.io framework which builds some little helper around the mean stack, to make things faster. If you aggregate an assets, it helps a lot to know that you can easily set things into the correct order with the option weight. The default weight is 0 when you dont set this option: mean.io framework I18n.aggregateAsset('js', 'lib/angular-translate/angular-translate.js',{absolute:true, weight:100 });I18n.aggregateAsset('js', 'lib/angular-translate-storage-local/angular-translate-storage-local.js',{absolute:true, weight:101});I18n.aggregateAsset('js', 'lib/angular-translate-storage-cookie/angular-translate-storage-cookie.js',{absolute:true, weight:102});

Soziale Netze und die Sicherheit! Report Kwick!

Die Sozialen Netzwerke, neudeutsch: Social Networks, halten nicht allzu viel von Sicherheit. Vor allem müssten die Entwickler viel mehr für das Thema XSS Sensibilisiert werden. D enn Potentielle Angreifer finden jede Schwachstelle im System. Und wer lange genug sucht der wird imme r fündig. Es sollte den An greifern nur nicht allzu einfach gemacht werden. Kwick.de hatte bis zum 20.06.08 auch noch oder wieder ein Problem mit XSS. Betroffen waren so gut wie alle Suchformulare auf der Seite. Per zufall bin ich auf diesen Umstand aufmerksam geworden. Eines sei gesagt. Bei Kwick kann man sich nun getrost Anmelden denn die Sicherheitslücke wurde sofort behoben. Also eine sichere Sache. Andere Social Networks haben ähnliche XSS Probleme, eigentlich erschreckend viele. Die Namen möchte ich nicht nennen denn sonst rennen vielleicht ein Paar Dummys dahin und testen es gleich......... Nachdem ich dieses Problem dem Betreiber gemeldet hatte wurde es auch Postwendend behoben. Nur aus diesem Gru

Flexible Arbeitgeber sind schwer zu finden ;)

Unternehmen, fast schon egal welcher Größe verlangen nach flexiblen Arbeitskräften. Und schimpfen sich selbst flexibel und bieten gar sogenannte "Flexiblen Arbeitszeiten" an. Und das thema "Home Office" wird auch gerne mal groß auf die Fahne gemalt und man denkt sich als Bewerber: "na das ist doch mal eine tolle Firma, da will ich hin" Doch zumeist entpupt sich diese tolle flexible Unternehmung vor allem als eines, eine kleine Mogelpackung. Frei nach dem Motto: "schreiben können wir ja vieles". So erwarten die Firmen das ich flexibel bin, dann weißt man auf ein "Flexible Arbeitszeit hin", mit einem dicken aber ,  so wie die CSU zur EU, von 9 bis 16 Uhr ist aber Kernarbeitszeit. Aha. Das klingt jetzt total flexibel für mich. Bei einem Wochensoll von 40h kann ich also jeden Tag überlegen wann ich denn jetzt um 8 komme oder um 9, denn teilweise sollte man ja auch nicht vor 7 kommen, sonst macht man ja eine Überstunde jeden Tag. So