Me gustaría cargar una foto a Facebook para un usuario en el álbum predeterminado para una aplicación. Esto se describe bajo publicación aquí: http://developers.facebook.com/docs/reference/api/photoExcepción al cargar fotos con Facebook Graph API
El método se ha respondido aquí: How can I upload photos to album using Facebook Graph API. Estoy utilizando el siguiente:
$args = array(
'message' => 'Photo Caption',
'image' => '@'.realpath("image.png")
);
$data = $facebook->api('/me/photos', 'post', $args);
Sin embargo tengo la excepción "(# 324) Requiere de carga de archivos" cuando intento esto. Tengo una sesión válida y tengo los permisos publish_stream y user_photos. Puedo recuperar datos usando la API. El archivo de imagen es definitivamente válido porque puede cargarse con file_get_contents(realpath("image.png"))
.
He probado esta solución, utilizando rizo, que funciona a la perfección: Upload Photo To Album with Facebook's Graph API
$args = array(
'message' => 'Photo from application',
'pic.png' => '@'.realpath('pic.png')
);
$tok = $session['access_token']
$url = 'http://graph.facebook.com/'.$album_id.'/photos?access_token='.$tok;
$ch = curl_init();
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);
En comparación con PHP SDK rizo de Facebook que se parece a esto (utilizando los mismos $ args y $ url):
$ch = curl_init();
$opts = self::$CURL_OPTS;
$opts[CURLOPT_POSTFIELDS] = http_build_query($args, null, '&');
$opts[CURLOPT_URL] = $url;
curl_setopt_array($ch, $opts);
$data= curl_exec($ch);
¿Por qué no funciona la versión de PHP? Parece que la función http_build_query() está interfiriendo con la carga de la imagen. No sé lo suficiente sobre curl para entender lo que está pasando aquí.
Muchas gracias por esto - me salvaron después de un largo tiempo de búsqueda – Lobe
Si se utiliza este, tenga en cuenta que los mensajes creados por el usuario podrían crear cargas de archivos no intencionales o maliciosos. – peterjwest
Gracias! Podrías pensar que esto sería prominente en la documentación para subir fotos. . . ¡¡¡WTH !!! – TuK