Je viens de mettre à jour mes SDK Parse et Facebook (1.7.1 et 4.0 respectivement) - les deux ont été une douleur absolue pour travailler, je pourrais ajouter!
Cependant, j'obtiens maintenant 209 erreurs lorsque j'essaie de me connecter avec Facebook.
Voici un exemple de mon code:
- (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);
}
}];
}
Lequel génère le [Erreur] suivant: jeton de session invalide (Code: 209, Version: 1.7.1)
Ma pensée initiale est que le problème est lié à mon code dans le délégué de l'application - sur les anciennes versions de facebooksdk, j'appliquerais le code suivant
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
withSession:[PFFacebookUtils session]];
}
Cependant, je ne peux pas trouver quoi que ce soit pour reproduire cela dans la version mise à jour, d'où mon code étant
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
Toute aide serait grandement appréciée.
Certaines des réponses publiées étaient des correctifs temporaires - mais le problème pourrait se reproduire plus tard si un utilisateur se déconnectait et tentait de se reconnecter - je pense que cela était dû au fait que j'autorisais également les utilisateurs anonymes - la seule façon de le supprimer est d'appeler [déconnexion pfuser] avant de se connecter
Supprimez l'application du simulateur ou de votre téléphone, puis reconstruisez et réexécutez l'application. Parfois, un ancien jeton est mis en cache. Je viens de résoudre ce problème pour mon application.
Consultez cette page: https://parse.com/tutorials/session-migration-tutorial
Votre application utilisait probablement des jetons de session hérités. Vous pouvez migrer vers des jetons de session révocables en l'ajoutant à votre délégué d'application juste après avoir défini l'ID d'application et la clé client.
[PFUser enableRevocableSessionInBackground];
Le site Web de Parse contient une section sur la gestion de cette erreur qui pourrait vous être plus utile: https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS
Je pense qu'il y a encore quelques étapes à suivre:
Vous devez ajouter [FBSDKAppEvents activateApp]
dans applicationDidBecomeActive
.
Tu devrais écrirereturn [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
dans la méthode didFinishLaunchingWithOptions
dans AppDelegate
.
Essayer les étapes ci-dessus devrait vous convenir.
Avec les sessions révocables, votre jeton de session actuel peut devenir invalide si son objet Session correspondant est supprimé du nuage d'analyse. Cela peut se produire si vous implémentez une interface utilisateur Session Manager qui permet aux utilisateurs de se déconnecter d'autres appareils, ou si vous supprimez manuellement la session via Cloud Code, REST API ou navigateur de données. Les sessions peuvent également être supprimées en raison de l'expiration automatique (si elles sont configurées dans les paramètres de l'application). Lorsque le jeton de session d'un appareil ne correspond plus à un objet Session sur le cloud d'analyse, toutes les demandes d'API de cet appareil échouera avec "Erreur 209: jeton de session non valide".