iOS 各种登录方式

一、键盘样式

  • 考虑不同键盘,适应不同的内容

二、登录方式

  • 使用第三方(QQ、微信、新浪)登入,前提是苹果要求必须有自己的账号系统!

  • 设计上对应没有安装第三方软件,给出提示或者影藏按钮,具体操作看对应平台文档,

三、自动登录、单点登录

  1. 用户名、密码自动登录
  • 用户名可以自行操作,密码需要保存,这里通过“钥匙串”保存,可以使用第三方库“SFHFKeychainUtils”

  • ServiceName是软件标识,可以自行设置,取值时会用到

//保存密码
if (userName && password) {
    NSError  *error;
    [[NSUserDefaults standardUserDefaults] setValue:userName forKey:@"LOGIN_NAME"];
    BOOL saved = [SFHFKeychainUtils storeUsername:userName andPassword:password forServiceName:ServiceName     updateExisting:YES error:&error];
    if(!saved){
          DDLogError(@"保存密码时出错:%@",error.localizedDescription);
    }
}
NSString *userName = [[NSUserDefaults standardUserDefaults] valueForKey:@"LOGIN_NAME"];
NSError *error;
NSString * password = [SFHFKeychainUtils getPasswordForUsername:userName andServiceName:ServiceName error:&error];
if(error){
    DDLogError(@"从Keychain里获取密码出错:%@",error);
    return;
}
  1. Token自动登录,第一次保存的Token,直接请求,获取信息,重新设置各种配置
//保存登录信息
NSString *file = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/UserLogin.data"];
[NSKeyedArchiver archiveRootObject:login toFile:file];
[[NSUserDefaults standardUserDefaults] setValue:login.Data.Token forKey:@"Token"];
[[NSUserDefaults standardUserDefaults] synchronize];
  1. 单点登录,我碰到的是嵌入到项目的第三方及时通信中去,通过他来监听上线下线

四、联合登录

  • 前提:保证同一个开发者账号下的App才可以

  • 也是保存钥匙串的方式,保存信息,同个手机都可以读取,实现联合登录

  • 使用第三方”KeychainItemWrapper“

//保存sessionID
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:kKMHealthCloudKey accessGroup:nil];
[wrapper setObject:login.Data.SessionId forKey:(id)kSecValueData];
[wrapper setObject:login.Data.AccountName forKey:(id)kSecAttrAccount];
//判断本地的sessionID
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:kKMHealthCloudKey accessGroup:nil];
NSString * sessionID = [wrapper objectForKey:(id)kSecValueData];
if (sessionID.length == 0 || !sessionID) {
//未能获取到sessionID
    return;
}
//判断sessionID是否有效
[self loginRequestWithSessionID:sessionID];
```

你可能感兴趣的:(iOS 各种登录方式)