身份认证 SDK

更新时间:2018-08-14 09:42:36

概述

提供基于 iotToken 的用户身份认证方案,通过和账号及用户SDK、API通道SDK的集成,完成用户身份凭证的生成和管理,以及发起API请求的用户身份的鉴权

依赖SDK 概述
日志 基础依赖SDK,提供客户端统一日志打印,日志等级控制,分模块日志隔离等能力
API 通道 提供API通道能力,和基础环境配置信息

初始化

身份认证 SDK 的初始化依赖 API 通道的初始化和账号抽象的实现:
API 通道的初始化查看这里>
账号抽象的实现查看这里>
然后再参考下面的示例代码初始化:

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

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

使用说明

发送带身份认证的请求

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

results matching ""

    No results matching ""