账号及用户 SDK
更新时间:2018-08-15 18:11:53
概述
提供自建账号体系能力,包括注册,登录,登出,获取账号,会话管理,人机校验,登录UI定制等功能。同时基于Oauth2.0协议,提供快速对接自有账号的能力,满足开发者在App开发中对接自有账号体系的需求。
初始化
账号和用户 SDK 的初始化依赖 API 通道的初始化,请参见:API 通道 SDK - 初始化
在 API 通道初始化成功后,再参考下面的示例代码初始化账号和用户 SDK:
// 引入头文件
#import <IMSApiClient/IMSConfiguration.h>
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>
ALBBOpenAccountSDK *accountSDK = [ALBBOpenAccountSDK sharedInstance];
// 设置安全图片authCode
IMSConfiguration *conf = [IMSConfiguration sharedInstance];
[accountSDK setSecGuardImagePostfix:conf.authCode];
// 设置账号服务器环境,默认为线上环境
[accountSDK setTaeSDKEnvironment:TaeSDKEnvironmentRelease];
// 设置账号服务器域名;如果是线上环境,可以不设置域名;
[[ALBBOpenAccountSDK sharedInstance] setGwHost:@"sdk.openaccount.aliyun.com"];
//如果需要切换到海外环境,请执行下面setDefaultOAHost方法,默认为大陆环境
//[[ALBBOpenAccountSDK sharedInstance] setGwHost:@"sgp-sdk.openaccount.aliyun.com"];
// 打开调试日志
//[[ALBBOpenAccountSDK sharedInstance] setDebugLogOpen:YES];
// 初始化
[accountSDK asyncInit:^{
// 初始化成功
} failure:^(NSError *error) {
// 初始化失败
}];
内置账号
使用说明
登录
// 引入头文件
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>
#import <ALBBOpenAccountCloud/ALBBOpenAccountUser.h>
// 获取账号UI服务
id<ALBBOpenAccountUIService> uiService = ALBBService(ALBBOpenAccountUIService);
// 显示登录窗口
[uiService presentLoginViewController:controller success:^(ALBBOpenAccountSession *currentSession) {
// 登录成功,currentSession为当前会话信息
// 获取当前会话标识
NSLog(@"sessionId:%@", currentSession.sessionID);
// 获取当前用户信息
ALBBOpenAccountUser *currentUser = [currentSession getUser];
NSLog(@"mobile:%@", [currentUser mobile]);
NSLog(@"avatarUrl:%@", [currentUser avatarUrl]);
NSLog(@"accountId:%@", [currentUser accountId]);
NSLog(@"displayName:%@", [currentUser displayName]);
} failure:^(NSError *error) {
// 登录失败对应的错误;取消登录同样会返回一个错误码
}];
退出登录
// 引入头文件
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>
// 退出登录
[[ALBBOpenAccountSession sharedInstance] logout];
刷新会话
// 引入头文件
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>
// 获取当前会话
ALBBOpenAccountSession *session = [ALBBOpenAccountSession sharedInstance];
// 刷新当前会话
[session refreshSessionIDWithCallback:^(NSString *sid, NSError *err) {
// 如果失败则返回error, 否则返回新的会话Id:sid
}];
获取会话 ID
// 引入头文件
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>
ALBBOpenAccountSession *session = [ALBBOpenAccountSession sharedInstance];
NSString *sessionID = session.sessionID;
获取用户信息
// 引入头文件
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>
// 获取当前会话
ALBBOpenAccountSession *session = [ALBBOpenAccountSession sharedInstance];
if ([session isLogin]) {
// 获取用户信息
ALBBOpenAccountUser *user = session.getUser;
}
自定义UI
请参考 UI界面自定义 一文
自有账号
注意在对接三方自有账号时,必须首先完成SDK的初始化。
引入依赖的头文件
#import <ALBBOpenAccountSSO/ALBBOpenAccountSSOSDK.h>
#import <IMSAccount/IMSAccountService.h>
实现自有账号自定义登录,获取 Oauth2.0 的 AuthCode,并调用 ALBBOpenAccountSSOService
进行 Oauth 授权登录。
如何实现 asyncLoginGetAuthCode:
,请参见:自有账号登录流程说明
@implementation IMSAccountThirdViewController
- (void)asyncLoginGetAuthCode:(void (^)(NSError * _Nullable error, NSString * _Nullable authCode))completionHandler {
//自有账号登录并通过 OAuth2.0 服务获取 AuthCode
}
- (IBAction)onClickLogin:(id)sender {
[self asyncLoginGetAuthCode:^(NSError * _Nullable error, NSString * _Nullable authCode) {
if (error) {
// 错误处理
return;
} else {
id<ALBBOpenAccountSSOService> ssoService = ALBBService(ALBBOpenAccountSSOService);
[ssoService oauthWithThirdParty:authCode delegate:self];
}
}];
}
@end
实现 Oauth 授权登录回调
@interface IMSAccountThirdViewController () <SSODelegate>
@end
@implementation IMSAccountThirdViewController
- (void)openAccountOAuthError:(NSError *)error Session:(ALBBOpenAccountSession *)session {
if (!error) {
//登录成功,发送登录成功通知,身份认证 SDK 会监听该通知进行用户身份凭证创建和管理
NSString *loginNotificationName = [[IMSAccountService sharedService].sessionProvider accountDidLoginSuccessNotificationName];
[[NSNotificationCenter defaultCenter] postNotificationName:loginNotificationName object:nil];
} else {
//处理登录失败
}
}
@end