2012-06-06 3 views
14

Estoy tratando de publicar una foto en la página de fans de Facebook de mi aplicación y también en la de los usuarios. He tenido éxito al publicar la foto en la pared de los usuarios, pero no se pudo publicar en la pared de las páginas de los fans. (El usuario no es necesariamente un administrador o propietario de una página, solo los usuarios normales. Como la página de fans tiene la opción de que cualquiera pueda publicar en ella, no es obligatorio que el usuario quiera incluso primero la página. ¿No?)Publicar foto en la página de fans de Facebook a través de la aplicación de iOS por usuarios normales que no son administradores

Después de buscar en Google por un tiempo, encontré this answer. Según esto, necesito un access_token de la página de fans y un album_id para hacerlo. Pero no puedo encontrar ninguna pista sobre cómo conseguirlos. Hasta ahora he intentado este código:

if ([appDelegate.facebook isSessionValid]) 
    { 
     NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             resultImage, @"picture", 
             nil]; 

     [appDelegate.facebook requestWithGraphPath:@"me/photos" 
             andParams:params 
            andHttpMethod:@"POST" 
             andDelegate:self]; // to post on users wall, works fine 

     NSString *path = [NSString stringWithFormat:@"my/accounts /fan_page_id?fields=access_toke/photos"]; 
     [appDelegate.facebook setAccessToken: FACEBOOK_ACCESS_TOKEN]; 

     [appDelegate.facebook requestWithGraphPath:path andParams:params andHttpMethod:@"POST" andDelegate:self]; // to post on fan page wall, this doesn't work 
    } 

¿Alguien me puede ayudar con esto? ¿Que me estoy perdiendo aqui? Gracias por adelantado.

ACTUALIZACIÓN

Según this answer, un usuario normal no puede publicar una foto en la pared de las páginas de fans de una aplicación para iOS, pero pueden compartir la foto en ella. Ahora, mi pregunta es, ¿cómo consigo publicar la foto en la pared de los usuarios y compartirla en la pared de la página de fans al mismo tiempo? ¿Es posible? ¿Cómo comparto la foto en la pared de la página de fans?

ACTUALIZACIÓN 2

This answer and the question dice que los usuarios habituales pueden escribir en una pared página de fans a través de noticias, por lo que he modificado mi código como este:

if ([appDelegate.facebook isSessionValid]) { 
     NSMutableDictionary *page_params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             @"fan_page_id", @"to", 
             @"Test", @"name", 
             @"Test", @"caption", 
             resultImage, @"picture", 
             nil]; 
     [appDelegate.facebook dialog:@"feed" 
           andParams:page_params 
           andDelegate:self]; 

} 

Pero, me siguen dando este mensaje de error ridículo y la aplicación se bloquea:

-[UIImage length]: unrecognized selector sent to instance 0x24d110 
2012-06-06 19:59:03.114 app_name[2739:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage length]: unrecognized selector sent to instance 0x24d110' 

¿Qué debo hacer ahora?

En este punto, después de esperar tanto, me viene a la mente la pregunta: ¿esto es posible? Si es así, ¿cómo logro esta tarea? Y si no, ¿cuáles son las alternativas? Por favor ayuda.

Actualización 3

acaba de encontrar que hay una known bug tanto en iOS SDK y el SDK Javascript para publicar cuadros de diálogo en la pared de la página de fans. ¿Es esto cierto para la carga de imágenes también? Si alguien tiene una solución para evitar este error, por favor ayuda.

Respuesta

7

Esto no es actualmente (junio de 2012) es posible debido a un error en la API: https://developers.facebook.com/bugs/206254392780441 tiene los detalles.

Una solución es colocar a la conexión /feed de la página y adjuntar una imagen a la historia de alimentación. Esa imagen no se mostrará tan grande como una carga de fotos adecuada, pero debería funcionar correctamente.

Ese error significa que publicar en la conexión /PAGE_ID/photos de una página utilizando un usuario access_token cargará incorrectamente la foto en la conexión /photos del usuario.

Publicar en la conexión /photos de una página funcionará como se esperaba cuando se utiliza el access_token de la página; la foto aparecerá en la página de fotos de la página, en la línea de tiempo de la página, y se atribuirá a la página misma (es decir, desde la página)

Si su aplicación es específicamente para agregar contenido a una página, y tiene un servidor- componente lateral, otra solución para conseguir las fotos de un usuario a la página es que los usuarios proporcionan una foto a usted a través de su propia interfaz (es decir, subirlo desde el dispositivo del usuario al servidor), y el uso de una de las páginas administradores access_tokens para obtener un Page access_token y realizar la carga de esa manera.

+0

gracias por su respuesta. como dije antes, la imagen se toma de la cámara del teléfono del usuario y luego el usuario la comparte en su pared y al mismo tiempo en la pared de la página del ventilador. para este caso, ¿puede proporcionarme una mejor manera? ¿Puede ser algún ejemplo/tutorial en caso de que haya realizado este tipo de modificación? – Shabib

+0

Puede publicar en su propio muro desde la aplicación y simultáneamente cargar la foto en su propio servidor, luego haga que su servidor use el token de acceso a la página para cargarlo en la página – Igy

0

En lugar de utilizar de diálogo, puede pedir al usuario conceder permission - publish_stream
(ya que hay un error en el componente de diálogo, de lo contrario no su requerido)

, puedes publicarla en una pared página (página asumiendo permite en la configuración de la página).

Puede probar el uso de graph api explorer. Puede cambiar la identificación de la página y la prueba otorgando el permiso anterior en la pestaña de permisos extendidos.

Nota
Una cosa más que debe recordar es, no puede enviar datos de imagen de parámetros de imagen. Debes proporcionar un enlace a la imagen.

+0

Gracias por su respuesta, me he concedido al usuario publicar corriente y la página permite la publicación, los usuarios anónimos (que aún no le ha gustado la página) sobre el mismo de la pared . En su nota, la imagen que intento publicar está tomada de la cámara, por lo que no sé cómo puedo proporcionar el enlace de la imagen como parámetro de imagen. Si ha logrado con éxito la tarea de lo que estoy tratando de hacer, ¿puede proporcionarme un tutorial o algo así? Estaría muy agradecido. – Shabib

+0

Si tiene un servidor, puede cargar imágenes en ese servidor y obtener la URL, y luego usar esa url para publicar en la página. – Venu

+0

No tengo uno, y esto no parece una buena solución. Esta es una aplicación de teléfono, el usuario toma una foto, la aplicación realiza algunas modificaciones y luego se comparte en Facebook (en la pared de los usuarios y en la pared de la página de fans). Si tengo que administrar un servidor para esto, esto no tiene sentido. De todos modos, gracias por tu respuesta. – Shabib

0

yo simplemente tratar de resolver el error de excepción. Es posible publicar en la fuente de noticias de tu página de fans. NO se puede publicar como la página de fan, ya que eso requeriría autenticación (por lo tanto, el requisito de token de acceso ... debe iniciar sesión como ese usuario para publicar como ellos). @Igy ya aborda esto arriba.

Sin embargo, usted no tiene código para el que esté utilizando el selector de imágenes para obtener la imagen. La excepción que recibe es porque está intentando verificar la longitud de un objeto UIImage en lugar del objeto NSData (que es lo que requiere Facebook). Para convertir su imagen del selector a datos use el siguiente fragmento (reemplace la variable img con su UIImage).

NSData *imgData = UIImageJPEGRepresentation(img, 0); 

// Now call to length by facebook SDK will work and the exception will not fail 
NSLog(@"Size of Image(bytes):%d",[imgData length]); 
0

creo que está utilizando el argumento incorrecto para la publicación de la foto

Usted debe debe usar en lugar de @"url"@"picture"

No estoy seguro de esto, pero podría funcionar.

I tenían el mismo problema en JavaScript, el cual fue resuelto.

favor ver here para referirse a mi problema

+0

Eso funciona en general, pero no anula la publicación a la conexión de las fotos de la página, ya que el usuario realmente carga el error de la fotoconcención del usuario – Igy

Cuestiones relacionadas