Antes de nada, he leído las preguntas this y this para resolver el problema a continuación y antes de preguntar.Manejar acceso no válido Retornar con FBSession openActiveSessionWithReadPermissions en Facebook iOS 3.1.1 SDK
Mi problema es que cuando el accessToken se expiró (ya sea porque la fecha de caducidad pasa, o manualmente mediante la supresión de la aplicación de mi App Center de Facebook) el siguiente código:
if ([[FBSession activeSession] isOpen]) {
//do something
}
else {
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if(FB_ISSESSIONOPENWITHSTATE(status)) {
//do something
}
}
}];
}
se interpone en el bloque else con Se abre FBSession.activeSession pero cuando se ejecuta 'hacer algo' el accessToken no es válido, por lo que la solicitud obtiene Error: código de estado HTTP: 400. Cuando intento hacer todo el procedimiento dos veces inmediatamente, la FBSession pide permiso (ya sea UIAlertView para iOS6 Facebook integrado, aplicación de Facebook o sitio web de Facebook en Safari) y el resto funciona sin problemas.
Mi preocupación es por qué tengo que hacer todo dos veces para que funcione bien y por qué Facebook SDK no puede detectar la primera vez que activeSession y accessToken no son válidos.
¡Gracias a todos por adelantado!
¡Muchas gracias, Chris! Parece funcionar, aunque no con un segundo intento sino con el cuarto. Supongo que será algo fijo en una próxima actualización de SDK. – ozzotto
El enfoque para obtener el código de error no parece funcionar de manera confiable. Creo que el formato JSON no es coherente: Error Domain = com.facebook.sdk Code = 5 "La operación no se pudo completar. (Com.facebook.sdk error 5)" UserInfo = 0x12c81710 {com.facebook.sdk : ParsedJSONResponseKey = ( { cuerpo = { error = { código = 190; mensaje = "el token de acceso fue invalidado en el dispositivo."; type = OAuthException; }; }; código = 400; } ), com.facebook.sdk: HTTPStatusCode = 400} – MaxGabriel
- [__ NSArrayM objectForKeyedSubscript:]: selector no reconocido enviado a la instancia – MaxGabriel