账号 iOS SDK

更新时间:2019-01-30 13:54:02

概述

提供自建账号体系能力,包括注册,登录,登出,获取账号,会话管理,人机校验,登录UI定制等功能。

初始化

账号和用户 SDK 的初始化依赖 API 通道的初始化,请参见:API通道 SDK
在 API 通道初始化成功后,再参考下面的示例代码初始化账号 SDK:

// 引入头文件
#import <IMSAuthentication/IMSAuthentication.h>
#import <IMSAccount/IMSAccount.h>
#import <IMSInitCode/IMSOpenAccount.h>

IMSAccountService *accountService = [IMSAccountService sharedService];
IMSOpenAccount *openAccount = [IMSOpenAccount sharedInstance];
[IMSAccountService sharedService].sessionProvider = openAccount;
[IMSAccountService sharedService].accountProvider = openAccount;

[IMSCredentialManager initWithAccountProtocol:accountService.sessionProvider];
IMSIoTAuthentication *iotAuthDelegate = [[IMSIoTAuthentication alloc] initWithCredentialManager:IMSCredentialManager.sharedManager];
[IMSRequestClient registerDelegate:iotAuthDelegate forAuthenticationType:IMSAuthenticationTypeIoT];

使用说明

登录

// 引入头文件
#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;
}

发送带身份认证的请求

// 引入头文件
#import <IMSAuthentication/IMSIoTAuthentication.h>
#import <IMSApiClient/IMSApiClient.h>

// 构建请求
NSString *path = @"/uc/listByAccount";
NSString *apiVer = @"1.0.0";
NSDictionary *params = @{};
IMSIoTRequestBuilder *builder = [[IMSIoTRequestBuilder alloc] initWithPath:path apiVersion:apiVer params:params];

// 指定身份认证类型
[builder setAuthenticationType:IMSAuthenticationTypeIoT];

//通过 IMSRequestClient 发送请求
[IMSRequestClient asyncSendRequest:builder.build responseHandler:^(NSError * _Nullable error, IMSResponse * _Nullable response) {
    if (error) {
        //处理Error,非服务端返回的错误都通过该Error回调
    } else {
        if (response.code == 200) {
            //成功,处理response.data
        }
        else {
            //处理服务端错误
        }
    }
}];

获取用户身份凭证

在账号登录成功后,可通过下面的方法同步获取用户身份凭证信息

#import <IMSAuthentication/IMSCredentialManager.h>

IMSCredential *credential = [IMSCredentialManager sharedManager].credential;
NSString *identityId = credential.identityId;
NSString *iotToken = credential.iotToken;

刷新用户身份凭证

当同步方法获取到的用户身份凭证为空时,可以通过下面的方法强制异步刷新一个新的用户身份凭证信息

#import <IMSAuthentication/IMSCredentialManager.h>

[[IMSCredentialManager sharedManager] asyncRefreshCredential:^(NSError * _Nullable error, IMSCredential * _Nullable credential) {
    if (error) {
        //刷新出错,参考错误码 IMSCredentialManagerErrorCode 处理
    } else {
        NSString *identityId = credential.identityId;
        NSString *iotToken = credential.iotToken;
    }
}];

自定义UI

请参考 UI界面自定义 一文。

results matching ""

    No results matching ""