2011-06-03 1 views
5

He visto un par de publicaciones sobre este tema, pero hasta ahora nada parece haberme ayudado. Básicamente, estoy escribiendo una aplicación de iOS e intento publicar una foto en un álbum de Facebook usando Graph API. Los datos de imagen se descargan primero de un servidor y luego se envían a Facebook. Estoy utilizando la clase ASIFormDataRequest y la url https://graph.facebook.com/MY_ALBUM_ID/photos, pero yo estoy constantemente el siguiente error:Error de Facebook al cargar una foto en un álbum a través de Graph API e iOS: (# 1) Se produjo un error desconocido

error =  { 
    message = "(#1) An unknown error occurred"; 
    type = OAuthException; 
}; 

Mi solicitud es el siguiente:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]]; 
self.photoRequest = request; 
[request setDelegate:self]; 
[request setPostValue:token forKey:@"access_token"]; 
[request setPostValue:message forKey:@"message"]; 
[request setTimeOutSeconds:240]; 
[request setRequestMethod:@"POST"]; 

UIImage *image = [UIImage imageWithData:data]; 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSData *imageData = UIImageJPEGRepresentation(image, 0.8); 
    [request setData:imageData forKey:@"source"]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [request startAsynchronous]; 
    }); 
}); 

La parte extraña es que estoy usando exactamente el mismo método para subir fotos a mi servidor para una parte diferente de la aplicación, y todo funciona bien. Incluso cargué la foto que estoy tratando de enviar a Facebook a mi servidor para ver si los datos estaban PUBLICANDO correctamente. Todo salió bien.

He leído que Facebook puede a veces escupir el error que estoy viendo si tiene un problema con el formato de la imagen, pero el error en sí mismo es bastante nebuloso. Sé que access_token es válido. Todas las demás solicitudes que estoy haciendo en Facebook están funcionando bien.

¿Alguna idea?

+0

¿Has pensado en un problema relacionado con la red? como por un cortafuegos? o tal vez una imagen demasiado grande? :) de los resultados de búsqueda de Google veo que parece un HTTP 400, que es una solicitud mal formada ... –

+0

@Vincent G Definitivamente no es un problema relacionado con la red **. Como prueba, cargué una imagen aleatoria de mi proyecto usando '[UIImage imageNamed: @" imageName "];' en vez de 'UIImage * image = [UIImage imageWithData: data];' y se publicó correctamente. Estamos utilizando ImageMagick en nuestro servidor para generar la imagen que estoy tratando de enviar. Parece que el problema radica en los datos de imagen generados por ImageMagick. – harrisonlee

+0

Bien, entonces el problema está más allá de ImageMagick. Jugar en Photoshop e intentar agregar imágenes a Facebook: algunos trabajos, otros no. No puedo encontrar lo que se trata de imágenes particulares que no desean cargar. Las imágenes que no se cargan desde mi aplicación tampoco se cargan cuando intento publicarlas manualmente en Facebook. Extraño. – harrisonlee

Respuesta

3

Bien, ¡ya lo descubrí!

Como ocurre, Facebook tiene restricciones de proporción a las imágenes cargadas. Todavía no estoy seguro de lo que son, pero en mi caso, una imagen de 198x715 no se ajustaba a sus requisitos de proporción. Nos pusimos en contacto con uno de los tipos que conocemos en el equipo de desarrollo de Facebook, y él dijo que no iban a cambiar las restricciones, pero agregarían mejores mensajes al error de la API.

Espero que ayude a alguien con problemas similares.

+0

De repente tengo el mismo problema, desde mediados de agosto. Con el último FB iOS SDK, todas las llamadas de carga de imágenes siguen fallando con la respuesta de error {"error": {"message": "(# 1) Se ha producido un error desconocido", "type": "OAuthException"}}. He intentado diferentes tamaños de imagen, pero todos fallan por igual. ¿Alguna idea más? Esto está frenando una importante aplicación de iPad/iPhone para mi cliente ahora. También lo probé desde una dirección IP diferente, en caso de que mi IP doméstica esté en la lista negra por algún motivo, pero con los mismos resultados. – Edwin

+0

Ok, descubrí mi problema también. En mi caso, la carga falló porque el parámetro "mensaje" que estaba transmitiendo junto con la carga contenía un enlace http: // (enlace goo.gl a una aplicación en la App Store de Apple). O eso, o el valor del mensaje fue demasiado largo. – Edwin

0

Hay una restricción de imagen que no está documentada, o al menos no pude encontrar nada, el límite de relación de aspecto es 1: 3 cuando la altura es mayor que el ancho de la imagen. Hice muchas pruebas para confirmar esto y puedo asegurarle que este es el límite a partir de hoy.

0

Como se indica en this answer, el problema puede deberse a que su aplicación está en modo Sandbox.

Cuestiones relacionadas