2012-07-24 3 views
1

Au moment je télécharger des images sur le serveur et les poster comme ceci:Facebook Graph API - Poster une image distante à un album

$photo = array(
    'message' => 'Status', 
    'source' => '@/full/path/of/the/image.png' 
); 

$response = $fb->api('/'.$album.'/photos', 'POST', $photo); 

J'utilise boucle sur le back-end pour poster cette demande et ça fonctionne comme un charme. Je me demande s'il est possible de publier l'image distante directement à la place pour télécharger une copie locale?

J'ai essayé de faire quelque chose comme ceci:

$photo = array(
    'message' => 'Status', 
    'source' => file_get_contents('http://www.domain.com/image.png') 
); 

$response = $fb->api('/'.$album.'/photos', 'POST', $photo); 

mais je m'y suis une exception de l'API graphique: « (# 324) Nécessite fichier de téléchargement »

On dirait que ce qui se passe lorsque vous n'envoyez pas l'en-tête multipart/data qui est défini automatiquement lors de l'envoi d'un tableau de données ($data est un tableau).

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

Donc je doute qu'il soit possible de publier une image distante. Que pensez-vous?

Répondre

2

Il est possible de télécharger une photo en donnant simplement l'URL de cette photo sous le nom de paramètre url.

Cette information est un peu caché dans le description of the photo endpoint, où il est dit que,

« Vous pouvez également publier une photo en fournissant un param URL avec l'URL de la photo. »

Ainsi, au lieu de fournir le paramètre source, fournissez simplement url avec la valeur de l'URL publiquement accessible de la photo. (Tous les autres paramètres sauf source restent les mêmes et sont toujours utilisables de la même manière.)

J'ai essayé cela récemment, et cela a bien fonctionné. Bien que, je l'ai seulement essayé pour des photos avec des URL de mon domaine d'application - je ne peux pas dire pour sûr si cela fonctionne pour des URL de "n'importe où" sur le Web aussi bien que je ne peux pas voir pourquoi ça ne devrait pas).

+0

Nice;) Merci beaucoup pour cela. Tellement plus agréable: D – maxwell2022

Questions connexes