views:

596

answers:

3

Hello,

I have been trying for a good few hours now to create an event through the Facebook API with an image. So far I have been able to create events though both the Graph and Rest APIs without images, but have been unable to attach any images.

I believe the REST API is the only API which supports attaching images, but the documentation is pretty poor and the php-sdk docs or code do not help much either.

My latest attempt is over at: http://promos.uk.glam.com/splash_test/example.php

With the code: http://pastebin.com/8JC8RAck (note the "require facebook.php" is the php-sdk - http://github.com/facebook/php-sdk/)

Note line 93 ( "if ($uid) {" ), this is supposed to be "if ($me) {", which was working for an hour or so, and then stopped working (no changes to the code that populates $me), odd.

So, the event creation code is lines 96-99 and as it is now it creates an event without an image, but as soon as I put back in the commented out code (line 98, ) it fails to do anything.

Does anyone know how to create events on facebook though the API with images? If so, please help me out here! I have no problems scrapping all this code if there is another solution, although I have to use PHP or Javascript.

Thanks all

A: 

You can post images to facebook like:

// variables required in this example:
$img_path = "/home/www/test.png"; // image path
$img_caption = "testing"; // caption
$album_id = "12345678910"; // album id
$facebook_uid = "555555555"; // facebook user id
$facebok_user_access_token = "ajsdhflhasdf|sjdhflkasdf."; // facebook user token 

//upload photo
$args = array(
    'aid'       => $album_id,       // album id, possibly event id?
    'caption'   => $img_caption,    // caption for image
    'uid'       => $facebook_uid,   // facebook user id of the poster
    'format'    => 'json'
    );
$args[basename($img_path)] = '@' . realpath($img_path);
$ch = curl_init();
$url = "https://api.facebook.com/method/photos.upload?access_token={$facebook_user_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);
$upload_result = curl_exec($ch);

This is how you can use the API to upload photos to facebook albums using PHP. Not exactly certain that it works for events also. I would test it out but I am unable to access facebook from work.

Hope this is a good start for you.

Jayrox
A: 

@jayrox I have tried the below code but it is not working for me.

`//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));`

Akhilesh
A: 

This seems to work

$file = "pj100.jpg";

$args = array( 'access_token' => 'your access token', 'name' => 'Event name', 'description' => 'The Description ', 'start_time' => '2012-09-01T12:00:00+0000', '@file.jpg' => '@' . realpath($file));

$target_url = "https://graph.facebook.com/me/events";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$target_url);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $args);

$result=curl_exec ($ch);

curl_close ($ch);

echo "Event ID= " . $result;

Phil