文档

账号及用户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(请参见用户账号开发指南),然后调用以下方法完成认证。

  1. 引入依赖的头文件。

    #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
  2. 实现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