2 votes

L'API de Facebook fonctionne bien pour /feed, mais pas pour /photos

Voici le code qui fonctionne bien si je transmets /pageid/feed a facebook->api Mais lorsque je le modifie pour télécharger l'image directement dans mon album photo Facebook, cela ne fonctionne pas. Veuillez me dire ce que je fais de mal dans le code suivant :

// Works fine
$status = $facebook->api("/194458563914948/feed", 'post', $attachment);

// Does not work
$status = $facebook->api("/196878530339618/photos", 'post', $attachment);

Source complète

    <?php

require 'src/facebook.php';

$app_id = "332267477347";
$app_secret = "xxxx";

$facebook = new Facebook(array(
 'appId' => $app_id,
 'secret' => $app_secret,
 'cookie' => true,
 'fileUpload' => true,

));

$facebook->setFileUploadSupport(true);  

$user = $facebook->getUser();
//echo $user;

if(($facebook->getUser())==0)
{
 header("Location:{$facebook->getLoginUrl(array('scope' => 'photo_upload,user_status,publish_stream,user_photos,manage_pages'))}");
 exit;
}
else {
$accounts_list = $facebook->api('/me/accounts');
echo "i am connected";
}
  $valid_files = array('image/jpeg', 'image/png', 'image/gif');

//to get the page access token to post as a page
foreach($accounts_list['data'] as $account){
      if($account['id'] == 194458563914948){      // my page id =123456789
        $access_token = $account['access_token'];
        echo "<p>Page -- Access Token: $access_token</p>";
        }
    }

//posting to the page wall

if (isset($_FILES) && !empty($_FILES))
{  
$aid = '421539304540205';
$folder = "pak/".$_FILES['pic']['name'];
$fold = 'http://snowdrop.com.pk/fb/'.$folder;
echo $fold."<br>";
if( move_uploaded_file($_FILES['pic']['tmp_name'], $folder) )
{
#Upload photo here
  $img = realpath($_FILES["pic"]["tmp_name"]);
$attachment = array('message' => $_POST['textfield'],
                           'aid' => $aid,
   'source' => '@' . $img,
                                'access_token' => $access_token,

                );
$status = $facebook->api("/421539304540205/photos", 'post', $attachment);

echo $status;
var_dump($status);

 }
 else{
    echo 'Only jpg, png and gif image types are supported!';

}
}
?>
<body>
 <!-- Form for uploading the photo -->
 <div class="main">
  <p>Select a photo to upload on Facebook Fan Page</p>
  <form method="post" action="" enctype="multipart/form-data">
  <p>Select the image: <input type="file" name="pic" />
    <br />
    <label>Description
    <input type="text" name="textfield" id="textfield" />
    </label>
  </p>
  <p><input class="post_but" type="submit" value="Upload to my album" /></p>
  </form>
 </div>
</body>

4voto

Nitzan Tomer Points 11798

Le chemin que vous utilisez /406221796071956/photos est erronée et c'est pourquoi ça ne fonctionne pas.

La raison pour laquelle ce chemin est mauvais, est que 406221796071956 est l'identifiant d'une image, voyez par vous-même, le Graph API Explorer pour 406221796071956 dit :

"type" : "photo"

Si vous voulez publier dans cet album, utilisez alors /196878530339618/photos puisque c'est l'album : Graph API Explorer pour 196878530339618

"type" : "album"


Modifier

Veuillez vous référer à https://developers.facebook.com/docs/reference/api/album/#photos pour ajouter des photos à un album.


2ème édition

Selon la documentation de l Objet de l'album :

can_upload

Détermine si l'UID peut télécharger vers l'album et renvoie true si l'utilisateur possède l'album, si l'album n'est pas plein et si l'application peut ajouter des photos à l'album

Il faut donc que l'album ne soit pas plein, qu'il en soit le propriétaire et qu'il ait les bonnes autorisations pour le téléchargement.

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