2012-07-13 15 views

Odpowiedz

10

Nie musisz.

Zamiast wdrażać metodę -session:didGenerateLoginCredentials:forUserName:SPSessionDelegate i przechowywanie poświadczeń w NSUserDefaults lub cokolwiek (podane poświadczenia są już zaszyfrowane i bezpieczne do przechowywania w czystym tekście).

Przy następnym uruchomieniu aplikacji, jeśli masz dostępne poświadczenia, pomiń po prostu SPLoginViewController i zaloguj się, używając metody SPSession 'attemptLoginWithUserName:existingCredential:rememberCredentials:. Jeśli spowoduje to błąd logowania, token został unieważniony i musisz poprosić użytkownika o ponowne zalogowanie się - unieważnienie może nastąpić, jeśli użytkownik zmieni hasło, ponieważ wygenerowano token.

Należy zauważyć, że parametry rememberCredentials: i stary sposób wykonywania czynności są teraz uznawane za przestarzałe i wkrótce zostaną usunięte.

4

poprzedniej odpowiedzi jest również nie ma już znaczenia, jak attemptLoginWithUserName: existingCredential: rememberCredentials: nie istnieje metoda (mimo to nadal, o których mowa w komentarzach SPSession.h)

Aby uzyskać konfigurację:

  1. Pobierz najnowszą cocoalibspotify z github i zbudować go w Xcode: https://github.com/spotify/cocoalibspotify
  2. produkcji i spadek do swojego projektu:

Aby bezpiecznie się zalogować lub automatycznie poprosi użytkownika auth jeśli nie wcześniej zalogowany:

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

metodą oddzwaniania do przechowywania poświadczenia po zalogowaniu się:

-(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]; 
} 
Powiązane problemy