首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >记住凭据的SPLoginViewController

记住凭据的SPLoginViewController
EN

Stack Overflow用户
提问于 2012-07-13 23:58:14
回答 2查看 1K关注 0票数 5

在CocoaLibSpotify中,如何让SPLoginViewController存储凭据,以便用户以后可以通过[SPSession sharedSession attemptLoginWithStoredCredentials:]自动登录?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-14 03:26:39

你没有。

相反,实现SPSessionDelegate方法-session:didGenerateLoginCredentials:forUserName:并将凭据存储在NSUserDefaults或其他格式中(给定的凭据已经加密,可以安全地以明文形式存储)。

下次你的应用启动时,如果你有可用的凭证,完全跳过SPLoginViewController,使用SPSessionattemptLoginWithUserName:existingCredential:rememberCredentials:方法登录。如果这产生了登录错误,令牌已经无效,你需要要求用户再次登录-如果用户在令牌生成后更改了他们的密码,则可能会发生无效。

请注意,rememberCredentials:参数和旧的attemptLoginWithStoredCredentials:操作方式现在被认为是过时的,很快就会消失。

票数 10
EN

Stack Overflow用户

发布于 2013-05-16 10:56:38

前面的答案也不再相关,因为attemptLoginWithUserName:existingCredential:rememberCredentials:方法不再存在(尽管它仍然在SPSession.h的评论中被引用)

要设置,请执行以下操作:

从github获取最新的cocoalibspotify并在Xcode:https://github.com/spotify/cocoalibspotify

  • build中构建它,然后将其放入您的项目:

要自动登录或提示输入用户身份验证,请执行以下操作:

代码语言:javascript
运行
复制
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]];
}

登录时存储凭证的回调方法:

代码语言:javascript
运行
复制
-(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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11474055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档