2012-07-13 19 views

risposta

10

Non è così.

Invece, implementare il metodo SPSessionDelegate-session:didGenerateLoginCredentials:forUserName: e memorizzare le credenziali in NSUserDefaults o qualsiasi altra (le credenziali fornite sono già crittografate e sicure per l'archiviazione in chiaro).

La prossima volta che si avvia l'app, se si dispone di credenziali disponibili, saltare interamente e accedere utilizzando il metodo attemptLoginWithUserName:existingCredential:rememberCredentials:SPSession. Se questo genera un errore di accesso, il token è stato invalidato e devi chiedere all'utente di effettuare nuovamente il login - l'invalidazione può accadere se l'utente cambia la sua password da quando il token è stato generato.

Si noti che i parametri rememberCredentials: e il vecchio modo di fare le cose attemptLoginWithStoredCredentials: ora sono considerati deprecati e andranno via presto.

4

La risposta precedente è anche non è più rilevante come l'attemptLoginWithUserName: existingCredential: rememberCredentials: metodo non esiste più (nonostante ancora in fase di cui nei commenti di SPSession.h)

Per ottenere l'installazione:

  1. Ricevi le ultime cocoalibspotify da github e lo ricostruisci in Xcode: https://github.com/spotify/cocoalibspotify
  2. costruzione e rientro nel progetto:

per accedere automaticamente o chiede di autenticazione dell'utente se non precedentemente iscritto:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableDictionary *storedCredentials = [defaults valueForKey:@"SpotifyUsers"]; 

if (storedCredentials == nil) 
    [self performSelector:@selector(showLogin) withObject:nil afterDelay:0.0]; 
else 
{ 
    NSString *u = [storedCredentials objectForKey:@"LastUser"] ; 
    [[SPSession sharedSession] attemptLoginWithUserName:u existingCredential:[storedCredentials objectForKey:u]]; 
} 

metodo di callback per memorizzare le credenziali quando connesso:

-(void)session:(SPSession *)aSession didGenerateLoginCredentials:(NSString *)credential forUserName:(NSString *)userName 
{ 
    NSLog(@"stored credentials"); 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSMutableDictionary *storedCredentials = [[defaults valueForKey:@"SpotifyUsers"] mutableCopy]; 

    if (storedCredentials == nil) 
     storedCredentials = [NSMutableDictionary dictionary]; 

    [storedCredentials setValue:credential forKey:userName]; 
    [storedCredentials setValue:userName forKey:@"LastUser"]; 
    [defaults setValue:storedCredentials forKey:@"SpotifyUsers"]; 
    [defaults synchronize]; 
} 
Problemi correlati