2012-08-07 18 views
13

Estoy intentando agregar la integración de Facebook en una aplicación usando el nuevo (beta) facebook ios sdk 3.0. Todo lo que me gustaría es publicar una actualización de estado en Facebook. Usé FBLoginView para iniciar sesión en Facebook. Puse mi id de aplicación en el plist como se indica en facebook. Puse un código para publicar en Facebook.ios-Facebook SDK 3.0 Error 5 Al publicar la actualización de estado

(void)viewDidLoad 
{ 
[super viewDidLoad]; 
NSArray *perms; 
perms = [NSArray arrayWithObjects:@"status_update", nil]; 
FBLoginView *loginview = 
[[FBLoginView alloc] initWithPermissions:perms]; 

loginview.frame = CGRectOffset(loginview.frame, 5, 5); 
loginview.delegate = self; 

[self.view addSubview:loginview]; 
// Do any additional setup after loading the view, typically from a nib. 

} 

- (IBAction)poststatus:(UIButton *)sender { 
NSString *message = [NSString stringWithFormat:@"Test staus update"]; 

[FBRequestConnection startForPostStatusUpdate:message 
          completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 

           [self showAlert:message result:result error:error]; 

          }]; 
} 
- (void)showAlert:(NSString *)message 
     result:(id)result 
     error:(NSError *)error { 

NSString *alertMsg; 
NSString *alertTitle; 
if (error) { 
    alertMsg = error.localizedDescription; 
    alertTitle = @"Error"; 
} else { 
    NSDictionary *resultDict = (NSDictionary *)result; 
    alertMsg = [NSString stringWithFormat:@"Successfully posted '%@'.\nPost ID: %@", 
       message, [resultDict valueForKey:@"id"]]; 
    alertTitle = @"Success"; 
} 

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle 
                message:alertMsg 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
[alertView show]; 
} 

Lo curioso es que este código funciona ONCE. Después de autenticar al usuario por primera vez, puedo publicar UNA actualización de estado exitosamente. Después de eso, todos los intentos posteriores fallarán con un error 5 de FBiOSSDK (en la consola, Error: código de estado HTTP: 400). La única forma de solucionar esto es eliminar la aplicación de la cuenta de Facebook y volver a autenticarse. No estoy seguro de cuál es el problema. Busqué soluciones en línea pero no pude encontrar nada. Si alguien sabe cómo solucionar esto, házmelo saber. Gracias

+0

Tiene el mismo código. Jugando con un delicioso proyecto de muestra de Facebook con app_id modificado. Tal vez esté relacionado ... – Centurion

+1

Creo que el problema es que por alguna razón no puedes publicar la misma actualización de estado una vez en un cierto período de tiempo. Si está intentando publicar la misma actualización de estado, intente cambiarla cada publicación. – benjih555

+1

Encontró el problema. En userInfo del NSError devuelto, aparece el mensaje de respuesta "Límite de solicitud de acción de alimentación alcanzado". Excavar aún más ... – Centurion

Respuesta

7

Parece que no hay ninguna respuesta al problema. He comprobado las muestras de FB que vienen con SDK, en estos ejemplos también ocurre el mismo error. Entonces, significa que después de algunas actualizaciones de estado (15-20), Facebook alcanza los límites para ese usuario en particular. Si cierra la sesión de ese usuario e inicia sesión como otro usuario, puede publicar correctamente.

Si encuentro alguna extensión para limitar la configuración, responderé. También Facebook no permite la misma publicación.

+0

Ese parece ser el caso ... Facebook debería documentar estas restricciones ... – benjih555

+0

Es cierto ... pero no podemos discutir ... :) –

10

com.facebook.sdk error 5 siempre es irritante mientras se trabaja con Facebook iOS sdk. La mayoría de las veces viene con un error adicional en la consola: código de estado HTTP: 400. Es una percepción de que hay un error en Facebook iOS sdk que produce este error al azar. Creo que este error se produce por algunas razones determinadas y sdk no proporcionan el motivo real de error cuando se produce.

varias razones posibles

  • Cada solicitud de SDK se logra con bloques de terminación que en realidad pasar como argumento a completionHandler. Este error ocurre cuando un bloque está en progreso y realizó otra solicitud. Un ejemplo simple podría ser Si ha escrito una solicitud para publicar en Facebook (startForPostStatusUpdate: :) ​​en alguna acción de botón. En un solo toque, funcionaría bien, pero si toca dos veces en el botón lanzará este error com.facebook.sdk error 5

  • Si está tratando de publicar cuando su sesión actual no está abierta. p.ej. Una vez que inicie sesión en Facebook, cancele la aplicación, vuelva a abrirla y luego intente compartir en Facebook, Resultado -> com.facebook.sdk error 5. En este caso, intente volver a abrir sesión usando

  • Facebook no permite el mismo estado se publique repetidamente, ellos piensan que podría ser algún tipo de spam, por ejemplo Si está tratando de actualizar el estado y ha codificado una cadena, digamos @ "Esta es una actualización de estado de prueba", está planteando una y otra vez. Después de 5 a 10 intentos, no te permitirán hacer más. Error com.facebook.sdk resultante 5. Si este es el escenario, debe cambiar su cadena de estado e intentar actualizar.

  • Facebook ha definido un límite para que un usuario en particular publique el estado usando sdk. Por ejemplo, si está tratando de actualizar el estado y lo ha hecho, digamos entre 15 y 20 actualizaciones de estado. Ellos no le dejará hacer más Resultante -> error com.facebook.sdk 5. En este escenario trata de desautorizar la aplicación de su cuenta de Facebook y reautorizarla o intente utilizar otra cuenta de Facebook

0

uso de un proxy!

FB iOS SDK es sólo una envoltura a una solicitud HTTP a graph.facebook.com/....? Señal_acceso = .....

Así se puede replicar fácilmente la solicitud o utilizar un proxy HTTP para ver la respuesta real del servidor (¡que no es el error 5!).

Cuestiones relacionadas