ios objective-c facebook parse.com facebook-sdk-4.0

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:

  1. [FBSDKAppEvents activateApp] agregar [FBSDKAppEvents activateApp] en applicationDidBecomeActive .

  2. Deberías escribir
    return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; en el método didFinishLaunchingWithOptions en AppDelegate .

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.