2010-04-27 6 views
43

Ich versuche mich mit Facebooks neuer Graph API vertraut zu machen und bis jetzt kann ich ziemlich einfach Daten abrufen und schreiben.Photo To Album mit Facebooks Graph API hochladen

Etwas was ich Mühe habe, anständige Dokumentation zu finden, ist das Hochladen von Bildern in ein Album.

Gemäß http://developers.facebook.com/docs/api#publishing müssen Sie die Nachricht Argument liefern. Aber ich bin mir nicht ganz sicher, wie ich das aufbauen soll.

älteren Ressourcen, die ich gelesen habe, sind:

Wenn jemand mehr Informationen hat oder könnte mir helfen, das Hochladen von Fotos zu einem Album angehen über Facebook Graph API bitte antworten!

Antwort

48

Hier sind einige verschiedene Möglichkeiten, Fotos mit der PHP Facebook Graph API hochladen. Die Beispiele gehen davon aus, dass Sie das $ facebook-Objekt instanziiert haben und eine gültige Sitzung haben.

1 - Hochladen auf Standard-Anwendung Album von Current User

Dieses Beispiel wird das Foto zu Ihrer Standardanwendung Album des aktuellen Benutzers laden. Wenn das Album noch nicht existiert, wird es erstellt.

$facebook->setFileUploadSupport(true); 
$args = array('message' => 'Photo Caption'); 
$args['image'] = '@' . realpath($FILE_PATH); 

$data = $facebook->api('/me/photos', 'post', $args); 
print_r($data); 

2 - Hochladen auf Ziel Album

Dieses Beispiel wird das Foto zu einem bestimmten Album hochladen.

$facebook->setFileUploadSupport(true); 
$args = array('message' => 'Photo Caption'); 
$args['image'] = '@' . realpath($FILE_PATH); 

$data = $facebook->api('/'. $ALBUM_ID . '/photos', 'post', $args); 
print_r($data); 
+0

Das hat für mich funktioniert! Und der Code ist kürzer und süßer! – nishantcm

+2

Vergessen Sie nicht hinzuzufügen: $ facebook-> setFileUploadSupport (true); – AbeEstrada

+1

@Abe Ja, das ist richtig, Sie können dies auch im Facebook-Konstruktor angeben: $ facebook = new Facebook (array ( 'appId' => 'ID', 'geheim' => 'SECRET', 'fileUpload' => true, "Cookie" => true)); –

22

Hier ist der Code, der für mich gearbeitet:

//upload photo 
$file= '/path/filename.jpg'; 
$args = array(
    'message' => 'Photo from application', 
); 
$args[basename($file)] = '@' . realpath($file); 
$ch = curl_init(); 
$url = 'http://graph.facebook.com/'.$album_id.'/photos?access_token='.$access_token; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$data = curl_exec($ch); 
//returns the photo id 
print_r(json_decode($data,true)); 

Link zur Dokumentation: http://developers.facebook.com/docs/reference/api/photo

+1

Wow, du bist der Mann AhDang ! – st4ck0v3rfl0w

+5

Woher weißt du das? Irgendwelche Unterlagen von Facebook.com? – Billy

+0

Ich würde auch gerne wissen, wo Sie das gefunden haben! Es sei denn du hast dein eigenes gerollt? –

7

Sie müssen ein paar Dinge tun, um die Grafik API mit PHP zu arbeiten. Dieser Code funktioniert. Beachten Sie die Dateiupload => true ...

Ich war auch nie in der Lage, es zu bekommen mit Javascript zu arbeiten, damit ich AJAX das tue:

require './facebook.php';

$facebook = new Facebook(array( 
    'appId' => 'ID', 
    'secret' => 'SECRET', 
    'fileUpload' => true, 
    'cookie' => true // enable optional cookie support 
)); 


$facebook->setFileUploadSupport(true); 

# File is relative to the PHP doc 
$file = "@".realpath("../../_images/stuff/greatness.jpg"); 

$args = array( 
    'message' => 'Photo Caption', 
    "access_token" => "urtoken", 
    "image" => $file 
); 


$data = $facebook->api('/ALBUMID_GOES_HERE/photos', 'post', $args); 
if ($data) print_r("success"); 

+0

Danke - das habe ich mit dem PHP SDK vergessen, setFileUploadSupport auf true zu setzen! – thaddeusmt

+0

Einfach und effektiv, nette Arbeit! – Alex