2010-11-23 12 views
9

Estoy intentando subir una foto a una página de Facebook que poseo utilizando el iOS SDK y la API de gráficos. Pude subir fotos a mi propio muro. También pude publicar un mensaje en el muro de la página de fans como administrador y crear un álbum en mi página de fans, así que creo que estoy haciendo las llamadas correctas, pero no tengo éxito.Publicar fotos en la página de fans de Facebook con SDK de iOS

Esto es lo que estoy haciendo actualmente.

Estoy acceso utilizando

Facebook *fb = [[Facebook alloc] init]; 
self.facebook = fb; 
[fb release]; 
NSArray *permissions = [[NSArray arrayWithObjects:@"read_stream", @"offline_access", @"publish_stream", @"manage_pages", @"user_photos", @"friends_photos",nil] retain]; 
[facebook authorize:FB_APP_ID permissions:permissions delegate:self]; 
[permissions release]; 

Después de una sesión, solicito las cuentas

[facebook requestWithGraphPath:@"/me/accounts" andDelegate:self]; 

Las cuentas se volvieron a mí con tokens de acceso para cada página y aplicación que tengo. Utilizo un bucle simple para analizar a través de las cuentas para agregar el access_token suministrado para la página en la que deseo subir una foto.

Luego configuro mi token de acceso de mi objeto de Facebook al nuevo access_token.

facebook.accessToken = new_accessToken; 

y tratar de subir una foto a mi página de fans usando

UIImage *uploadImage = [UIImage imageNamed:@"t200.jpg"]; 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
       uploadImage, @"source", 
      @"test caption", @"message",    
      nil]; 


[facebook requestWithGraphPath:@"/me/photos" andParams:params 
     andHttpMethod:@"POST" andDelegate:self]; 

La respuesta que recibe es

 
{"error":{"type":"OAuthException","message":"(#1) An unknown error occurred"}} 

Es esto un error en la API de Facebook gráfica? También intenté hacer esta llamada utilizando solicitudes HTTPS estándar, y obtuve el mismo resultado.

Respuesta

0

No estoy seguro de esto ya que soy bastante nuevo en la integración de FB iOS pero creo que no deberías usarme/fotos sino las xyz/fotos donde xyz es el ID de la página que deseas publicar.

+0

Lo he intentado con la identificación de la página, pero aún así eso tampoco funciona. Usarme parece correcto porque cuando cambias el token de acceso, a qué accedes. Entonces yo accede a tu página de fans. – leo83

1

noticias de ... pero no estoy seguro sobre la parte página de fans, pero es necesario agregar "? Señal_acceso = ..." después "/ me/fotos" o lo que sea que terminan usando la API gráfica para conseguir más allá el error desconocido El sdk de Facebook no agrega automáticamente el token de acceso, por lo que debe hacerlo usted mismo.

[facebook requestWithGraphPath: [NSString stringWithFormat: @ "/ me/photos? Access_token =% @", facebook.accessToken] andParams: params andHttpMethod: @ "POST" andDelegate: self];

+0

Si mira en Facebook.m como se indica en el SDK, verá que el SDK agrega access_token a los parámetros. Sin embargo, uno necesita obtener un access_token diferente para la página de fans. – mahboudz

4

Ater sesión con éxito a Facebook, se puede obtener la lista FanPage solicitando @ "/ me/cuentas" e iterar a la página de fans que desee y solicitar su accessToken haciendo solicitud para @"/FBFanPageID?fields=access_token"

Este accessToken es diferente de tu facebook.accesstoken.

Después de conseguir Fanpage accessToken, configurarlo como facebook accessToken por

[_facebook setAccessToken:_accessTokenForFanPage]; // esto es un paso necc

Ahora puedes subir a la pared Fanpage por @"/FBFanPageID/photos"

álbumes Solicitud Fanpage por @"/FBFanPageID/albums"

Subir a un álbum en particular por @"/AlbumsID/photos"

Para cargar estas imágenes se usará el diccionario de parámetros.

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: IMAGE,@"source", IMAGECAPTION,@"message",
nil];

1

tengo códigos muy similares y funciona, la única cosa que es un poco diferente es que crear la instancia de Facebook en el AppDelegate ..

QRSMAppDelegate * delegado = (QRSMAppDelegate *) [[ UIApplication sharedApplication] delegate];

if (![[delegate facebook] isSessionValid]) { 
    [[delegate facebook] authorize:permissions]; 

Al igual que inicialmente creó la instancia de Facebook en el controlador de vista y me salió con una gran cantidad de errores extraños. El problema (más tarde me enteré) es ... Facebook responde pasando una URL a la instancia de la clase de Facebook y desde el exterior, el único punto de entrada a su aplicación es el delegado de la aplicación. (¡Consulte la Hackbook de la aplicación de muestra de Facebook sdk)!

- (BOOL) aplicación: (UIApplication *) aplicación openURL: (NSURL *) url sourceApplication: (NSString *) sourceApplication anotación: (id) {anotación

BOOL ret = [facebook handleOpenURL:url]; 

.... return (ret); }

La cuestión aquí es, por supuesto, ¿y si yo sólo uso de Facebook en una pequeña parte de mi aplicación y millas de distancia del delegado de la aplicación (Facebook creación de instancias que requieren para declarar el delegado!

En lugar de la cara igual problemas complejos al pasar la url, en realidad fue más fácil asociar el controlador de vista (delegado de Facebook) en el delegado de la aplicación y pasarlo a la jerarquía de vista.

0

Puede enviar un correo electrónico a su página de admiradores y obtener la foto adjunta aparecerá como si el administrador la hubiera publicado.

En la página de tu fan, elige editar la página y luego elige el móvil. En la página móvil, Facebook le mostrará una dirección de correo electrónico que puede utilizar para publicar en su página de fans.

En iOS que utilizan el http://code.google.com/p/skpsmtpmessage/ para enviar el correo electrónico

debe utilizar esta ...

svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-de sólo lectura

para descargar el código

Don Incluya cualquier texto en el correo electrónico además de algo en el asunto. De lo contrario, no se publicará.

Cuestiones relacionadas