2015-04-02 9 views
30

Ho appena aggiornato entrambi i miei Parse e Facebook SDK (rispettivamente 1.7.1 e 4.0) - entrambi erano un assoluto problema per riuscire a lavorare che potrei aggiungere!Token di sessione non valido Parse (Codice: 209, Versione: 1.7.1)

Tuttavia io ora ottenere 209 errori quando tento di accedere con facebook Ecco un esempio del mio codice

- (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); 
    } 
}]; 

}

Quale yeilds il seguente [Errore]: non valido token di sessione (Codice: 209, Versione: 1.7.1)

il mio pensiero iniziale è che il problema è qualcosa a che fare con il mio codice nel delegato app - sulle versioni precedenti del facebooksdk vorrei applicare il seguente codice di

0.123.
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [FBAppCall handleOpenURL:url 
       sourceApplication:sourceApplication 
        withSession:[PFFacebookUtils session]]; 

}

Tuttavia I cant sembrano trovare qualcosa da replicare questo nella versione aggiornata, da qui il mio codice essendo

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
              sourceApplication:sourceApplication 
                annotation:annotation]; 

}

Qualsiasi aiuto sarebbe molto apprezzato

+2

questo è ormai un bug accettato dal team di Facebook Parse Eng https://developers.facebook.com/bugs/756392341145634/ – CPD

risposta

7

Alcune delle risposte pubblicate erano correzioni temporanee - tuttavia il problema potrebbe ripresentarsi più tardi se un utente si disconnetteva e ha provato a ricollegarlo di nuovo - penso che questo fosse dovuto al fatto che consentissi anche agli utenti anonimi - l'unico modo che potevo cancellare è chiamare [pfuser Esci] prima il login

+0

Ciò causerà la perdita di tutti i dati dell'utente anonimo quando si crea un account, giusto? – picciano

18

Controlla questa pagina: https://parse.com/tutorials/session-migration-tutorial

Molto probabilmente la tua app utilizzava token di sessione legacy. Puoi eseguire la migrazione a token di sessione revocabili aggiungendo questo al delegato dell'app subito dopo aver impostato l'ID app e la chiave client.

[PFUser enableRevocableSessionInBackground]; 

il sito web di Parse ha una sezione sulla manipolazione di questo errore che potrebbe essere di maggiore aiuto a voi: https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS

+2

Ehi, grazie questo non aiuto però – user499846

+1

Ho avuto lo stesso problema. Quando ciò accade, non ti consentirà di eseguire ANY tutte le chiamate fino a quando l'utente non avrà effettuato l'accesso.Devi disabilitare Revocable Accounts e quindi chiamare ParseUser.LoginAsync (username, pass); Dopo aver effettuato l'accesso, ho rimosso il codice e potrebbe eseguire chiamate per analizzare prima che l'utente abbia effettuato nuovamente l'accesso. –

+0

Questo ha funzionato per me -> PFUser.enableRevocableSessionInBackground() – Jay

34

Eliminare l'applicazione dal simulatore o il telefono, quindi rigenerare e ri-eseguire l'applicazione. A volte un vecchio token viene memorizzato nella cache. Ho appena risolto questo problema per la mia app.

+2

Oh grazie amico ...! –

+1

Fantastico !! Ha aiutato !! upvoted :) –

+6

Questo ha risolto il mio problema, ma poi si è nuovamente verificato più tardi – user499846

2

penso che ci hanno bisogno di essere seguiti alcuni più passi:

  1. si deve aggiungere [FBSDKAppEvents activateApp] in applicationDidBecomeActive.

  2. Si dovrebbe scrivere
    return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; nel metodo didFinishLaunchingWithOptions in AppDelegate.

Provare sopra i passaggi dovrebbe funzionare per voi.

Problemi correlati