2013-02-03 4 views
1

Je développe une application Facebook qui donne des résultats dans une image.Impossible de publier l'image sur Facebook

Je le code en utilisant PHP gd library et il est dynamique. Lorsque vous visitez la page "http://example.com/result.php?name=your name", il affiche un fichier image avec votre nom sur l'URL. Mon problème est de poster cette image dans le flux de photos de l'utilisateur de Facebook. L'utilisateur peut voir la sortie, mais lorsque je tente de le poster, il affiche

Fatal error: Uncaught CurlException: 26: couldn't open file " http://mysite.orgfree.com/result.php?name=bestapp " thrown in /home/vhosts/powerofname.orgfree.com/base_facebook.php on line 977

Voici le code que je l'habitude de poster

$facebook->setFileUploadSupport(true); 
$ret_obj = $facebook->api('/me/photos', 'POST', array(
    'source' => '@'.'http://mysite.orgfree.com/result.php?name='.$name, 
    'message' => 'Blah blah' 
)); 

Je vous serais reconnaissant si quelqu'un peut repérer mon problème.

+0

Vérifiez le fichier existe, vérifiez vos autorisations pour le fichier, et que l'utilisateur PHP/Apache a le droit de le lire. Vous pouvez le faire avec file_exists() et is_readable() avant de créer l'appel Facebook. Copie possible: http://stackoverflow.com/questions/11062427/fatal-error-uncaught-curlexception-26-failed-creating-formpost-data-thrown – Chris

Répondre

1

Vous devez indiquer le chemin d'accès à l'image sur le système de fichiers, pas sur le Web. Donc, vous devez télécharger l'image, l'enregistrer dans un fichier, fournir le chemin d'accès à ce fichier, télécharger et supprimer l'image du disque.

$tmpfile = tempnam(__DIR__,'fbu'); 
file_put_contents($tmpfile, 'http://powerofname.orgfree.com/result.php?name='.$name); 
$ret_obj = $facebook->api('/me/photos', 'POST', array(
    'source' => '@'.$tmpfile, 
    'message' => 'Blah blah' 
)); 
unlink($tmpfile); 
+0

mais je suis hébergeant dans une société d'hébergement gratuit. Comment puis-je créer un fichier temporaire sur le répertoire? –

+0

Habituellement, cela est fait en créant un dossier avec ftp et en définissant des autorisations d'écriture pour cela. –

2

Si vous fournissez une URL HTTP pour l'image (au lieu d'un téléchargement réel), alors vous devez utiliser le paramètre url au lieu de source:

$ret_obj = $facebook->api('/me/photos', 'POST', array(
    'url' => 'http://mysite.orgfree.com/result.php?name='.$name, 
    'message' => 'Blah blah' 
)); 
+0

Vous avez sauvé mon homme de jour ... – Sandeep