账号及用户SDK
账号及用户SDK提供自建账号体系能力,包括注册、登录、登出、获取账号、会话管理、人机校验、登录UI定制等功能。同时基于Oauth 2.0协议,提供快速对接自有账号的能力,满足开发者在App开发中对接自有账号体系的需求。
初始化说明
初始化前需确保已正确集成安全图片,具体操作,请参见SDK初始化和集成安全图片。
SDK使用Pod集成完成依赖添加后,还需要将ALBBOpenAccountUI.framework
中的xib
目录放置到主工程目录下(每次升级SDK后都需要执行该操作)。
内置账号
内置账号为物联网智能视频服务提供的账号能力,您在客户端集成后即可使用。包括以下内容:
基础功能:包括注册、登录、退出登录、忘记密码、注销账号等。发送短信的业务存在使用限制,具体说明,请参见使用限制的短信限制。
注册。
// 引入头文件 #import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h> #import <ALBBOpenAccountCloud/ALBBOpenAccountUser.h> // 获取账号UI服务 id<ALBBOpenAccountUIService> uiService = ALBBService(ALBBOpenAccountUIService); // 显示手机注册窗口,presentingViewController将通过present方式展示登录界面viewcontroller [uiService presentRegisterViewController:presentingViewController success:^(ALBBOpenAccountSession *currentSession) { // 注册成功,currentSession为当前会话信息 } failure:^(NSError *error) { // 只有用户取消注册才会执行 }]; // 显示邮箱注册窗口,presentingViewController将通过present方式展示登录界面viewcontroller [uiService presentEmailRegisterViewController:presentingViewController success:^(ALBBOpenAccountSession *currentSession) { // 注册成功,currentSession为当前会话信息 } failure:^(NSError *error) { // 只有用户取消注册才会执行 }];
登录。
目前平台已经支持两种登录方式:账号登录、邮箱登录。登录页面调起后,两种登录方式都可以使用。
// 引入头文件 #import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h> #import <ALBBOpenAccountCloud/ALBBOpenAccountUser.h> // 获取账号UI服务 id<ALBBOpenAccountUIService> uiService = ALBBService(ALBBOpenAccountUIService); // 显示登录窗口,presentingViewController将通过present方式展示登录界面viewcontroller [uiService presentLoginViewController:presentingViewController 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) { // 登录失败对应的错误;取消登录同样会返回一个错误码 }];
您也可以自行开发短信登录方式,需自行开发UI界面。
<IMSAccount/IMSAccountService.h> /** 发送手机验证码 @mobile 手机号 @mobileLocationCode 手机区号 */ - (void)sendSmsCode:(NSString *)mobile mobileLocationCode:(NSString *)mobileLocationCode complete:(void (^)(BOOL isSuccess,NSError *error))complete; /** 手机验证码登录 @mobile 手机号 @mobileLocationCode 手机区号 @smsCode 手机验证码 */ - (void)loginWithSmsCode:(NSString *)mobile mobileLocationCode:(NSString *)mobileLocationCode smsCode:(NSString *)smsCode complete:(void (^)(BOOL isSuccess,NSError *error))complete;
退出登录。
// 引入头文件 #import <IMSAccount/IMSAccountService.h> // 退出登录 [[IMSAccountService sharedService] logout];
忘记密码。
在调起登录页面后,在登录页面内会出现注册和忘记密码的功能,无需额外开发。
注销账号。
注销账号的时候,同时会把用户绑定的设备都解除绑定关系,请参见客户端API参考>账号服务文档。
修改个人信息。
修改昵称。
/ 引入头文件 #import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h> #import <ALBBOpenAccountCloud/ALBBOpenAccountService.h> [ALBBService(ALBBOpenAccountService) updateAccountProfile:@{@"displayName" : @"name1"} Callback:^(NSError *error) { if (error == nil) { NSLog(@"modify nickname successfully "); } else { NSLog(@"fail to modify nickname"); } }];
修改头像
需要先将头像图片存储到云端,获取该图片的URL,再用如下方式更新。
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h> #import <ALBBOpenAccountCloud/ALBBOpenAccountService.h> [ALBBService(ALBBOpenAccountService) updateAccountProfile:@{@"avatarUrl" : url} Callback:^(NSError *error) { if (error == nil) { NSLog(@"modify photo image successfully "); } else { NSLog(@"fail to set photo image"); } }];
刷新会话。
// 引入头文件 #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; }
登录失效处理
请参见身份认证SDK中API请求的认证错误处理方法。
三方自有账号
在对接三方自有账号时,必须先完成SDK的初始化。
在对接三方自有账号之前,须先确认默认的账号页面(内置账号体系)可以正常注册和登录,并完成SDK的初始化。
选择自有账号通过OAuth2.0协议接入,配置流程,请参见用户账号开发指南。
三方自有账号在自有服务器上登录成功之后,获取Authorization Code(请参见用户账号开发指南),然后调用以下方法完成认证。
引入依赖的头文件。
#import <ALBBOpenAccountSSO/ALBBOpenAccountSSOSDK.h> #import <IMSAccount/IMSAccountService.h>
实现自有账号自定义登录,获取Oauth 2.0的
AuthCode
,并调用ALBBOpenAccountSSOService
进行Oauth授权登录。@implementation IMSAccountThirdViewController - (void)asyncLoginGetAuthCode:(void (^)(NSError * _Nullable error, NSString * _Nullable authCode))completionHandler { //自有账号登录并通过Oauth 2.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