SPLoginViewController for storing credentials

In CocoaLibSpotify, how do I get the SPLoginViewController to store credentials so that users can later log in automatically through [[SPSession sharedSession] tryLoginWithStoredCredentials:]?

+5
source share
2 answers

No.

Instead, implement the method SPSessionDelegate -session:didGenerateLoginCredentials:forUserName:and save the credentials in NSUserDefaultsor whatever (these credentials are already encrypted and are safe to store in clear text).

, , , SPLoginViewController SPSession attemptLoginWithUserName:existingCredential:rememberCredentials:. , , - , .

, rememberCredentials: attemptLoginWithStoredCredentials: .

+10

, tryLoginWithUserName: existingCredential: rememberCredentials: ( , SPSession.h)

:

, :

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

:

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

All Articles