2012-07-13 13 views
5

CocoaLibSpotify में, मैं क्रेडेंशियल स्टोर करने के लिए SPLoginViewController कैसे प्राप्त करूं, ताकि उपयोगकर्ता बाद में [[SPSession SharedSession] tryLoginWithStoredCredentials:] के माध्यम से स्वचालित रूप से लॉगिन कर सकें?SPLoginViewController को प्रमाण पत्र याद रखने के लिए

उत्तर

10

आप नहीं करते हैं।

इसके बजाय, SPSessionDelegate विधि -session:didGenerateLoginCredentials:forUserName: को लागू करने और NSUserDefaults या जो कुछ भी इन क्रेडेंशियल्स की दुकान (दिए गए साख पहले से ही एन्क्रिप्टेड और cleartext में भंडारण के लिए सुरक्षित कर रहे हैं)।

अगली बार जब आपका ऐप लॉन्च होता है, तो आपके पास प्रमाण पत्र उपलब्ध हैं SPLoginViewController पूरी तरह से छोड़ दें और SPSession की attemptLoginWithUserName:existingCredential:rememberCredentials: विधि का उपयोग करके लॉगिन करें। यदि यह लॉगिन त्रुटि उत्पन्न करता है, टोकन को अमान्य कर दिया गया है और आपको उपयोगकर्ता को फिर से लॉगिन करने के लिए कहने की आवश्यकता है - टोकन उत्पन्न होने के बाद उपयोगकर्ता अपना पासवर्ड बदलता है तो अमान्यता हो सकती है।

ध्यान दें कि rememberCredentials: पैरामीटर और पुराने attemptLoginWithStoredCredentials: चीजों को करने का तरीका अब बहिष्कृत माना जाता है और जल्द ही जा रहा है।

4

पिछले जवाब भी नहीं रह गया है attemptLoginWithUserName के रूप में प्रासंगिक है: existingCredential: rememberCredentials: विधि अब मौजूद नहीं है

(के बावजूद यह अभी भी SPSession.h की टिप्पणियों में करने के लिए भेजा जा रहा है) सेटअप पाने के लिए:

  1. GitHub से नवीनतम cocoalibspotify जाओ और Xcode में इसे बनाने: https://github.com/spotify/cocoalibspotify
  2. निर्माण और अपनी परियोजना में छोड़:

स्वचालित रूप से लॉग इन या यदि पहले से लॉग इन नहीं उपयोगकर्ता प्रमाणन के लिए संकेत करने के लिए:

-(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]; 
} 
: साख के भंडारण के लिए

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

कॉलबैक विधि लॉग इन