账号及用户 SDK

更新时间:2019-08-01 11:20:36

概述

提供自建账号体系能力,包括注册,登录,登出,获取账号,会话管理,人机校验,登录UI定制等功能。同时基于Oauth2.0协议,提供快速对接自有账号的能力,满足开发者在App开发中对接自有账号体系的需求。

初始化

注意:SDK集成使用Pod集成,添加完依赖后需要将ALBBOpenAccountUI.framework中的xib放置到主工程目录下。

账号和用户 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];
// 设置账号服务器域名;如果是线上环境,可以不设置域名;
[accountSDK setGwHost:@"sdk.openaccount.aliyun.com"];
//如果需要切换到海外环境,请执行下面setDefaultOAHost方法,默认为大陆环境
//[accountSDK setGwHost:@"sgp-sdk.openaccount.aliyun.com"];
// 打开调试日志
//[accountSDK setDebugLogOpen:YES];

// 初始化
[accountSDK asyncInit:^{
  // 初始化成功
} failure:^(NSError *error) {
  // 初始化失败
}];

内置账号

使用说明

注册

// 引入头文件
#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) {
  // 登录失败对应的错误;取消登录同样会返回一个错误码
}];

退出登录

// 引入头文件
#import <ALBBOpenAccountCloud/ALBBOpenAccountSDK.h>

// 退出登录
[[ALBBOpenAccountSession sharedInstance] logout];

忘记密码

调起登录页面之后,在登录页面内会出现注册和忘记密码的功能

修改个人信息

修改昵称
// 引入头文件
#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 请求的认证错误处理”章节

OA 语言切换

2019-07-05更新日志:
新增两种语言:印度语、意大利语
语言前缀:hi、it
SDK版本 : pod 'IMSOpenAccountCustom', '1.1.0-stable'

1. 使用默认语言
只用默认语言,不需要进行任何语言设置,默认中文,只需要再xib自行调整UI即可

2. 简单集成
2.1 pod 'IMSOpenAccountCustom', '1.0.0-stable'
2.2 将 IMSOpenAccountCustom的IMSOpenAccountCustomResource.bundle下的xib放到主工程,如果已经有了,可自行决定是否替换
2.3 设置语言,只需要指定前缀就好:设置OA模块语言:zh、en、es、de、fr、ja、ko、ru、hi、it
https://img.alicdn.com/tfs/TB1nyyNVMHqK1RjSZFEXXcGMXXa-1814-762.png

    // 使用默认的翻译资源文件
    [[IMSiLopOALanguageManage shareInstance] setOpenAccountModuleLanguageWithLanguagePrefix:@"ko"];

// 想使用自己的资源文件(xxxx):将 IMSOpenAccountCustom的IMSOpenAccountCustomResource.bundle的.lproj文件中的内容拷贝,自行整理一份相同key的八国语言翻译
[https://img.alicdn.com/tfs/TB1Z9WBVPDpK1RjSZFrXXa78VXa-1460-486.png]

    [[IMSiLopOALanguageManage shareInstance] 
    setOpenAccountModuleLanguageWithLanguagePrefix:@"ko" bundleName:@"xxxx"];

3. 高度自定义方式(自定义比较高)

//一、设置云端语言:zh-CN、en-US、fr-FR、de-DE、ja-JP、ko-KR、es-ES、ru-RU、hi-IN、it-IT
[[ALBBOpenAccountSDK sharedInstance] setRpcLocale:locale];

//二、修改xib上显示语言,默认显示中文
//1、将ALBBOpenAccountUI下拷贝ALBBOpenAccount.bundle中的.lproj文件中的内容拷贝,自行整理一份相同key的八国语言翻译
//2、设置显示的国际化文件
[[ALBBOpenAccountSDK sharedInstance] setLocale:@"zh.lproj"];
//3、指定显示的国际化文件的具体路径
NSString *bundlePath = [NSString stringWithFormat:@"%@/%@.bundle/zh.lproj",[NSBundle mainBundle].bundlePath, bundleName];
[[ALBBOpenAccountSDK sharedInstance] setLocaleBundle:[NSBundle bundleWithPath:bundlePath]];
//4、通过设置xib各个控制器的代理,自行在代理方法中对控件进行取多语言文案,实现赋值操作
id<ALBBOpenAccountUIService> uiService = ALBBService(ALBBOpenAccountUIService);
[uiService setLoginViewDelegate:self];

- (void)loginViewDidLoad:(ALBBOpenAccountLoginViewController *)viewController {
    viewController.usernameField.placeholder = @"xxx";// 自行取资源赋值
    viewController.usernameLabel.text = @"xxx";// 自行取资源赋值
}

自定义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

results matching ""

    No results matching ""