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

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

Create a progressive web application - live coding session video

Aprilscherz Google Maps - Spiele Ms. Pac-Man

In diesem Jahr hat das Google Maps team einen Aprilscherz aus dem Jahre 2015 ausgegraben und etwas erweiteret. Im Jahr 2015 konnte man Pac-Man spielen. In diesem Jahr ist es die "Ms. Pac-Man" geworden. Im Video zeige ich es euch in der Google Maps App auf dem Android