2010-09-23 17 views
9

Estoy intentando subir una imagen a través de mi aplicación con Facebook Graph API a un álbum de mi página de fans. Aunque proporciono el albumID como un parámetro para subir la imagen, se carga en un álbum llamado APPLICATION_NAME Photos en mi propio perfil. El álbum de la página de fans permanece vacío. Intenté también enviar el ID de página de mi página de fans en lugar de un álbum, pero el resultado es el mismo. El código que utilizo para la carga es:Subir imagen a la página de fans de Facebook con API

$fb_pfoto = $facebook->api('/' . $albumID . '/photos','POST', array(
     'access_token' => $session['access_token'], 
     'message'  => 'Caption', 
     'source'  => '@' . realpath('/path/to/image.jpg') 
    )); 

Por favor, dame ideas de cómo puedo subir la imagen a la página de fans y no a mi propio álbum perfil.

Respuesta

9

No sé si esto podría ayudar, pero tal vez necesite solicitar manage_pages permiso extendido y luego usar la página devuelta access_token para publicar imágenes. Puede leer brevemente sobre este proceso here.

continuación, puede probar estos enlaces con el token de acceso para la página de fotos de publicación:

/me/photos 
/<page_id>/photos 
/<album_id>/photos 
+0

Muchas gracias por la respuesta. Según lo que leí de su enlace, este permiso me permite acceder a la página de fans del usuario. Lo que necesito lograr es subir el contenido a una sola página de fans administrada por mí. – o15a3d4l11s2

+0

Gracias, hermano !!!! me salvaste la vida :) Publicación impresionante – Mohit

+0

@serg brother me puedes dar un ejemplo. ¿Cómo puedo publicar imágenes individuales o múltiples en la página de la compañía de Facebook del cliente? y también dime ¿Cómo puedo gestionar si el cliente tiene múltiples páginas de Facebook? – Sid

12

Aquí está la secuencia de comandos para cargar fotos en su Facebook Fanpage:

<html> 
<head> 
<title>WebSpeaks.in | Upload images to Facebook</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<?php 
require_once 'library/facebook.php'; 
$facebook = new Facebook(array(
'appId' => $app_id,, 
'secret' => $app_secret, 
'fileUpload' => true 
)); 


//It can be found at https://developers.facebook.com/tools/access_token/ 
$access_token = '<Your access token>'; 

$params = array('access_token' => $access_token); 

//The id of the fanpage 
$fanpage = '330299184793'; 

//The id of the album 
$album_id ='10150418901414794'; 

//Replace arvind07 with your Facebook ID 
$accounts = $facebook->api('/arvind07/accounts', 'GET', $params); 

foreach($accounts['data'] as $account) { 
if($account['id'] == $fanpage || $account['name'] == $fanpage){ 
    $fanpage_token = $account['access_token']; 
} 
} 


$valid_files = array('image/jpeg', 'image/png', 'image/gif'); 

if(isset($_FILES) && !empty($_FILES)){ 
if(!in_array($_FILES['pic']['type'], $valid_files)){ 
    echo 'Only jpg, png and gif image types are supported!'; 
}else{ 
    #Upload photo here 
    $img = realpath($_FILES["pic"]["tmp_name"]); 

    $args = array(
    'message' => 'This photo was uploaded via WebSpeaks.in', 
    'image' => '@' . $img, 
    'aid' => $album_id, 
    'no_story' => 1, 
    'access_token' => $fanpage_token 
); 

    $photo = $facebook->api($album_id . '/photos', 'post', $args); 
    if(is_array($photo) && !empty($photo['id'])){ 
    echo '<p><a target="_blank" href="http://www.facebook.com/photo.php?fbid='.$photo['id'].'">Click here to watch this photo on Facebook.</a></p>'; 
    } 
} 
} 

?> 
<!-- Form for uploading the photo --> 
<div class="main"> 
    <p>Select a photo to upload on Facebook Fan Page</p> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data"> 
    <p>Select the image: <input type="file" name="pic" /></p> 
    <p><input class="post_but" type="submit" value="Upload to my album" /></p> 
    </form> 
</div> 
</body> 
</html> 

Usted puede ver complete tutorial here.

+1

Me temo que esta muestra de código en realidad no funciona Arvind.Mientras devuelve la identificación con foto "cargada", cuando uno intenta acceder a la foto, dice "El contenido no está disponible en este momento". – Dean

+0

El access_token caduca después de dos horas (https://developers.facebook.com/tools/access_token/) – billy

4

Mi mejor conjetura sería uno de los dos possibilties:

  • que su aplicación no tiene permiso para subir a ese álbum. Si solicita/me/albums con el token de acceso a las páginas, se enumerarán los álbumes asociados con esa página. El es un campo can_upload para cada álbum que es verdadero o falso (específico para el token de acceso que está utilizando).

    o

  • está utilizando un token de acceso asociado a su cuenta personal, y no a la página del álbum pertenece. Aquí hay alguna información sobre cómo autenticarse como una página en lugar del usuario propietario de la página: http://developers.facebook.com/docs/authentication/pages/

+0

David, esta es una de las mejores ideas que pude encontrar sobre este tema (que como muchos otros, estoy luchando con. .). Seguí tus pasos para buscar el campo 'can_upload' y aparece como 'falso' para todos los álbumes, incluyendo 'Wall Photos'. Los fanáticos pueden subir fotos al muro de la página a través de la pestaña de foto/video habitual en el muro. Todas esas fotos se cargan en 'Fotos de pared'. Sin embargo, el campo can_upload aparece como 'falso' y supongo que una publicación de varias partes/formulario a través de una api (pageId/photos? Access_token = ...) no va a funcionar. Cómo crear un álbum con can_upload = true? – user1055761

+0

Facebook dice que solo los álbumes creados por su aplicación tendrán can_upload = true, pero he encontrado que esto no es cierto en todos los ámbitos. La forma más sencilla de hacerlo funcionar es publicar su foto sin el campo de ayuda. Por defecto, Facebook creará un álbum llamado AppName's Photo's si no existe, y agregará la foto allí. Además, recomendaría solicitar simplemente "/ me" utilizando access_token para asegurarte de que realmente estás usando el token de la página y no tu propio token de acceso de usuario. – thefreeman

+0

Muchas gracias David. (Todo esto, sin embargo, no te permite publicar una foto en una página o muro de usuario como tú.) A menos que no entienda bien, los puntos anteriores son para poder subir fotos a la página como la 'página', ¿verdad?) – user1055761

1

tuve el mismo problema difícil que cuando trato de compartir una foto a una página, he publicado como un usuario no como una página. Y cuando intento publicarlo en un álbum, la foto se publica en mi perfil. Pero gracias a thefreeman He resuelto el problema Como thefreeman dijo, Usted debe tomar primero manage_pages permiso a continuación, obtener página de acceso de emergencia como se ha mencionado here a continuación, utilizar este token en lugar de token de acceso de usuario en su aplicación o sitio web finaly, para publicar las fotos en la pared de la página "me/photos" o para publicarlo en un álbum específico en la página use "{album-id}/fotos"

Cuestiones relacionadas