Direkt zum Hauptbereich

Facebook GRAPH Picture Upload Tutorial

So mit der Facebook GRAPH API lässt sich ja einiges machen. Ich widme mich heute mal dem Photo Upload. Und biete hierzu auch ein paar Code Samples an welche man benutzen kann.

So let`s go. Am einfachsten mit der GRAPH API zu arbeiten ist es wenn wir mit dem Offiziellen PHP Packet von Facebook arbeiten. Dies gibts unter GITHUB:
https://github.com/facebook/php-sdk/

Hier noch ein kleines Beispiel wie man dieses Paket zum laufen bringt:
include_once('facebook.php');

class facebookFactory {

private $facebook;
private static $instance = null;

private function __construct() {
$this->facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
'cookie' => true,
));
}

private function __clone() {

}

public static function getInstance() {
if(! self::$instance) {
self::$instance = new facebookFactory();
}

return self::$instance;
}

public function getFacebook() {
return $this->facebook;
}

}

Dies ist eine kleine Facebook Factory. Wer weiß ob man vielleicht das Offizielle Paket gegen ein anderes eintauscht. Im Konstruktor wird die Klasse Facebook aus dem facebook Packet instanziert. Dort werden alle nötigen Informationen, also APP_KEY, SECRET übergeben.
Diese Daten bekommt ihr von Facebook wenn ihr eine Anwendung erstellt.

So nun widmen wir uns dem Bilder Upload. Ich neige immer dazu "Fremdpackete" zu wrappen. Also nicht direkt auf die Methoden von der Klasse Facebook zurückzugreifen. Dazu habe ich ein "Arbeitstier" welche alle nötigen Methoden implementiert hat und einfach immer das Passende von der Klasse Facebook aufruft.

Um ein Bild hochzuladen mittels der "Graph" API hochzuladen. Hier ein kleinen Auszug meiner Upload Funktion welche die Facebook Upload Funktion anspricht:
$arguments = array(
'message' => 'Die Bildunterschrift :) ',
'tags'=>$this->makeTagArray($this->getRandomFriends($userId)),
'source' => '@' .realpath( BASEPATH . '/tmp/'.$imageName),
);
public function uploadPhoto($albId,$arguments) {
//https://graph.facebook.com/me/photos
try {

$fbUpload = $this->facebook->api('/'.$albId.'/photos?access_token='.$this->facebook->getAccessToken(),'post', $arguments);
return $fbUpload;
}catch(FacebookApiException $e) {
$e;
// var_dump($e);
return false;
}
}

In dieser Methode wird auf das Facebook Objekt zugegriffen und dann die API angesprochen. Dann den Pfad, also welche Methode, wir von der Graph API ansprechen wollen.
In meinem Fall übergebe ich eine ID eines Albums und Poste dort das Foto. Alternativ kann man auch einfach /me angeben. Dann handelt Facebook Automatisch die Alben.

Für diesen Aufruf ist wie bei allen Post aktionen ein Access Token notwendig. Diesen Liegert ebenfalls die Klasse Facebook.

Mit diesem Aufruf Posten wir ein Bild und Taggen direkt mal ein paar User. Hierzu erläuter ich noch die Methode makeTagArray:
private function makeTagArray($userId) {
foreach($userId as $id) {
$tags[] = array('tag_uid'=>$id, 'x'=>$x,'y'=>$y);
$x+=10;
$y+=10;
}
$tags = json_encode($tags);
return $tags;
}
Wie man sieht erstellt die Methode ein array welches ein Assoziatives Array mit sämtlichen Informationen zum Tag enthält. In meinem Fall wird der Methode einfach ein Array mit userIds von Facebook übergeben. Die Userids werden durchlaufen, die Position x und y wird aktualisiert und das wars dann auch schon.
Nun wird das Array zurückgegeben und steht nun ebenfalls als Argument für den Graph aufruf zur Verfügung. Die Option Tags muss immer ein array enthalten welches die Informationen für die Tags enthält, auch wenn man nur einen Tag hinzufügen möchte!

So ich hoffe es hat dem einen oder anderen weitergeholfen.

Feedback ist immer Wilkommen, und über lob wird sich gefreut.

Kommentare

Beliebte Posts aus diesem Blog

2016 Trend - Digitalisierung von Geschäftsprozessen in KMU

Der Digitale Wandel ist nicht nur ein Trend, er macht auch Prozesse und somit Unternehmen agiler, Wirtschaftlicher und lässt diese schneller und Risikofreier Wachsen. Gerade Mittelständische Event und Promotion Agenturen arbeiten zumeist noch mit Excel, was zwar gut funktioniert. Jedoch den Nachteil hat das es nicht vernetzt ist und anfällig für Fehler ist. Gerade wenn mehrere Menschen an etwas Arbeiten ist es schnell vorbei komplexe Abläufe in Excel abzubilden. Und der Digitale Wandel schafft hier abhilfe. Waren doch vor 10 Jahren die Grund investitionen in eine Branchenlösung noch enorm. So sind dank cloud services diese einstiegspreise stark gefallen und bieten zumeist ein faires Preis Modell an was sich an die Nutzung des Produktes orientiert. Am weitesten verbreitet ist das bezahlen nach Firmengröße/Anzahl Nutzer.  Dieses Preismodell hat den Vorteil das man auch als KMU ein kleines Paket wählen kann und eine sehr günstige Software erhält. Desweiteren bieten gerade digit...

Progressive Web App

In einem vorherigen Post habe ich meinen kleinen Notenrechner vorgestellt. In diesem Post möchte ich basierend darauf eine Progressive Web App vorstellen welche Online wie Offline funktioniert. Und welche man auch dann laden kann wenn der Browser offline ist. Die Seite sowie den Quellcode findet hier hier: Notenrechner : https://kayschneider.github.io/notenRechner/#/calc Quellcode: https://github.com/KaySchneider/notenRechner Was genau eine Progressive Web App ist, wird hier erklärt: https://developers.google.com/web/progressive-web-apps/ In diesem kleinen Notenrechner, widme ich mich nur der Offline Funktionalität der kleinen App. Der Notenrechner soll online und offline gleichermaßen funktionieren. Dazu benötigen wir einen Service Worker, welcher uns den gewünschten content herunterlädt und beim Nutzer auf die Festplatte ablegt, dort kann nun auch im Offline Modus auf die Inhalte zugegriffen werden. Als positiver Nebeneffekt, lädt die Seite auch schneller zuminde...

Promotion Planung -- Software Neu

Promotion Planung Software Vorstellung: empplan In der Promotion Planung gibt es diverse Softwareangebote und hier möchte ich ein paar Vorstellen, heute zum Start der Serie gibt es direkt eine Neuerscheinung am Markt der Promotion Software, Empplan .  Empplan ist eine Software as a Servive Lösung, sowie Salesforce.com als Beispiel. Mit Empplan kann man Zielgenau seine Promoter steuern, Einsätze Planen und die Durchführung zentral Überwachen. Es gibt auch eine einfache Möglichkeit ein Serien Event für Dauerpromotions zu erstellen: Zu den Mitbewerbern unterscheidet es sich das Empplan direkt die Tages reports ( Sales Reports) für die Auftraggeber unterstützt, dabei können direkt die Produkte des Kunden hinterlegt werden um Fehler im Reporting zu vermeiden.  Darüber hinaus hat es einige spannende Ansätze, Es werden einfach Projekte für Kunden angelegt und über eine bereits Hinterlegte Mart-Point of Sale Datenbank für DACH spart man sich viel Zeit beim Anlegen der Point o...