ios - Parse token de sesión no válida(Código: 209, Versión: 1.7.1)
objective-c facebook (4)
Acabo de actualizar tanto mi Parse como los SDK de Facebook (1.7.1 y 4.0, respectivamente), ¡ambos eran un verdadero dolor para poder trabajar y agregar!
Sin embargo, ahora recibo 209 errores cuando trato de iniciar sesión con Facebook. Aquí hay un ejemplo de mi código
- (void)loginWithFacebook:(HMSuccessBlock)completion{
NSArray *permissionsArray = @[@"user_about_me",@"user_location",@"user_friends",@"user_relationships"];
// Login PFUser using Facebook
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
if (!user) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Dismiss", nil];
[alert show];
completion(NO, error);
} else if (user.isNew) {
NSLog(@"User signed up and logged in through Facebook!");
if (completion) {
completion(YES, nil);
}
} else {
NSLog(@"User logged in through Facebook!");
completion(YES, nil);
}
}];
}
Lo cual arroja el siguiente [Error]: token de sesión no válido (Código: 209, Versión: 1.7.1)
Mi idea inicial es que el problema tiene que ver con mi código en el delegado de la aplicación: en versiones anteriores de facebooksdk, aplicaría el siguiente código
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
withSession:[PFFacebookUtils session]];
}
Sin embargo, parece que no puedo encontrar nada para replicar esto en la versión actualizada, de ahí que mi código sea
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
Cualquier ayuda sería muy apreciada
Algunas de las respuestas publicadas fueron correcciones temporales. Sin embargo, el problema podría volver a ocurrir más adelante si un usuario se desconectara e intentara volver a iniciar sesión. Creo que esto se debe a que también permití que los usuarios anónimos lo puedan borrar. [pfuser logout] antes de iniciar sesión
Creo que hay que seguir algunos pasos más:
[FBSDKAppEvents activateApp]
agregar[FBSDKAppEvents activateApp]
enapplicationDidBecomeActive
.Deberías escribir
return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
en el métododidFinishLaunchingWithOptions
enAppDelegate
.
Probar los pasos anteriores debería funcionar para usted.
Echa un vistazo a esta página: https://parse.com/tutorials/session-migration-tutorial
Lo más probable es que tu aplicación utilizara tokens de sesión heredados. Puede migrar a tokens de sesión revocables agregándolo al delegado de su aplicación justo después de configurar la identificación de la aplicación y la clave del cliente.
[PFUser enableRevocableSessionInBackground];
El sitio web de Parse tiene una sección sobre el manejo de este error que podría ser de más ayuda para usted: https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS
Elimine la aplicación del simulador o su teléfono, luego reconstruya y vuelva a ejecutar la aplicación. A veces, un token antiguo se almacena en caché. Acabo de resolver este problema para mi aplicación.