web-dev-qa-db-fra.com

Analyser le jeton de session invalide (Code: 209, Version: 1.7.1)

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.

31
user499846

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

7
user499846

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.

34
Ronaldoh1

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

18
Mohssen Fathi

Je pense qu'il y a encore quelques étapes à suivre:

  1. Vous devez ajouter [FBSDKAppEvents activateApp] dans applicationDidBecomeActive.

  2. Tu devrais écrire
    return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; dans la méthode didFinishLaunchingWithOptions dans AppDelegate.

Essayer les étapes ci-dessus devrait vous convenir.

2
R_Developer

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".

1
Yogesh Bangar