7 votes

Attacher une image à un événement Facebook (sdk php, rest ou graph api)

Duplicata possible :
Ajouter une photo à un événement facebook avec Graph API

Cela fait maintenant quelques heures que j'essaie de créer un événement via l'API Facebook avec une image. Jusqu'à présent, j'ai pu créer des événements sans image via les API Graph et Rest, mais je n'ai pas pu joindre d'image.

Je crois que l'API REST est la seule API qui permet de joindre des images, mais la documentation est assez pauvre et les documents ou le code de php-sdk ne sont pas d'une grande aide non plus.

Ma dernière tentative se trouve sur le site : http://promos.uk.glam.com/splash_test/example.php

Avec le code : http://pastebin.com/8JC8RAck (notez que le "require facebook.php" est le php-sdk) http://github.com/facebook/php-sdk/ )

Notez la ligne 93 ("if ($uid) {" ), qui est censée être "if ($me) {", qui a fonctionné pendant une heure environ, puis a cessé de fonctionner (aucun changement dans le code qui remplit $me), étrange.

Ainsi, le code de création d'événement se trouve aux lignes 96-99 et tel qu'il est maintenant, il crée un événement sans image, mais dès que je remets le code commenté (ligne 98, ), il ne fait rien.

Quelqu'un sait-il comment créer des événements sur Facebook via l'API avec des images ? Si oui, aidez-moi ! Je n'ai aucun problème à mettre tout ce code au rebut s'il existe une autre solution, même si je dois utiliser PHP ou Javascript.

Merci à tous

10voto

dj_silvermane Points 11

Merci à tous pour vos réponses. J'ai décidé de revenir sur cette question pour voir si l'API fonctionne correctement maintenant. C'est le cas ! Le téléchargement de photos avec l'API graphique fonctionne désormais. Merci à Stan James d'avoir attiré mon attention sur ce point et d'avoir fourni le code permettant de publier des photos, que j'ai adapté pour les événements :

Mise en place :

//Setup the Facebook object allowing file upload
$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxx',
  'cookie' => true,
  'fileUpload' => true
));

Poste :

//Path to photo (only tested with relative path to same directory)
$file = "end300.jpg";
//The event information array (timestamps are "Facebook time"...)
$event_info = array(
    "privacy_type" => "SECRET",
    "name" => "Event Title",
    "host" => "Me",
    "start_time" => 1290790800,
    "end_time" => 1290799800,
    "location" => "London",
    "description" => "Event Description"
);
//The key part - The path to the file with the CURL syntax
$event_info[basename($file)] = '@' . realpath($file);
//Make the call and get back the event ID
$result = $facebook->api('me/events','post',$event_info);

J'ai mis tout le code sur pastebin (http://pastebin.com/iV0JL2mL), c'est un peu le bazar de mon débogage et de ma colère contre Facebook il y a des mois ! Mais ça marche.

2voto

Phil Points 21

Cela semble fonctionner

$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;

1voto

Stan James Points 373

Le code suivant fonctionne pour moi, en utilisant le SDK PHP .

$facebook->setFileUploadSupport(true);
$attachment = array(
  'message' => $caption,
);    
$attachment[basename($file_path)] = '@' . realpath($file_path);
$result = $facebook->api('me/photos','post',$attachment);

Pour le faire avec du brut curl voir cette réponse .

0voto

Jayrox Points 1955

Vous pouvez poster des images sur Facebook comme :

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

Voici comment vous pouvez utiliser l'API pour télécharger des photos dans les albums Facebook en utilisant PHP. Pas exactement certain que cela fonctionne aussi pour les événements. Je le testerais bien, mais je ne peux pas accéder à Facebook depuis mon travail.

J'espère que c'est un bon début pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X