用户工具

智能验证接口_ios

这是本文档旧的修订版!


智能验证接口


1 文档说明

1.1 功能描述

智能验证SDK为开发者提供一个完全透明、方便、高效的验证服务,智能验证平台聚合了稳定的短信、语音验证码服务,开发者无需再开发自己的短信通道、语音网关,而且基于公共云的强大服务,使得验证能逐步避免下发短信、语音手机号的方式验证,从而更快速,更准确快速验证,解决APP验证的验证难题、提升产品体验。

1.2 阅读对象

本文档主要阅读对象为开发人员,包括客户端和服务端。

1.3 业务术语

术语 解释
下发 智能验证平台使用自有的聚合SMS、语音能力发送短信或者发起呼叫告知用户验证码
异步通知 在智能验证平台正确验证过手机号后,在完成返回给APP通知的同时,执行异步
线程通知开发者服务器验证结果
签名 本文档中涉及的签名都是以MD5的32位小写格式,签名字符串(开发者主账号+应用ID
+手机号+应用配置的密钥)

2 开发前准备

2.1 注册UCPaaS用户账号

登录www.ucpaas.com官网,注册(已经有账号的跳过)

UCPaas运营人员审核后,可执行下一步创建应用

2.2 创建应用

登录后管理中心,点击“应用中心”—》“创建应用”

配置项目:

指定智能验证配置项:

2.3 创建智能验证短信模板

每个应用下可创建一个(只能有一个)智能验证短信的模板

2.4 开发环境准备

2.4.1 新建工程

创建一个iPhone工程需要在Mac系统下面安装Xcode的软件,Xcode安装完成后可以在桌面的快速启动栏中的“Launchpad”中或者应用程序中找到一个图标看到后单击或者双击即可打开软件,Xcode版本最小需要4.2。

打开Xcode后的界面可以看到几个选项,创建工程需要选择“Create a newXcode project”,如下图所示:

也可以根据菜单创建工程,依次选择XCode菜单栏中的FiLe→New→Project,如下图所示:

选择完后弹出的界面中选择左边的“iOS”下面的“Application”,然后选择右边的“SingLeViewAppLication”进行双击或者点击右下角“Next”, 如下图所示:

在完成后弹出的界面中的“ProductName”中填写你的工程名,如下图所示:

添加完成后点击右下角的”Next”,在弹出的对话框中选择你需要把工程放置的位置。这样一个工程就初步的创建完成。

2.4.2 导入UCSSDK

创建完成工程后,把SDK包里面的ucssdk文件夹拷贝到新创建的工程路径下面,然后在工程目录结构中,右键选择Add Files to “UCSVoipDemo”(工程名称,在弹出的对话框中选择新创建的工程文件夹下的sdk这个文件夹,即前面拷贝的文件夹)。或者将这个文件夹拖入XCode 工程目录结构中, 在弹出的界面中勾选Copy items into destination group’s folder(ifneeded),并确保Add To Targets勾选相应的target。 相应的操作请看下图中所示:

2.4.3 配置工程信息

• 添加依赖框架(Frameworks) UCSSDK的实现,依赖了一些系统框架,在开发应用时,要在工程里加入这些框架。开发者首先点击工程右边的工程名,然后在工程名右边 依次选择TARGETS→BuiLd Phases→Link Binary With Libraries,展开LinkBinary With Libraries后点击展开后下面的“+“来添加下面的依赖项:

添加步骤如图所示:

• 编译器设置 在xcode5.1环境下,首先点击工程右边的工程名,然后在工程名右边依次选择TARGETS、Build Settings LLVM 5.1- Language C++”中的”C++ Standard Library”.存后面的选择框中选择libstdc++(GNU C++ standard Library)”选项,如果默认是则不需要修改。步骤如下图所示:

• 编译器链接设置 在xcode5.1环境下,首先点击工程右边的工程名,然后在工程名右边依次选择TARGETS、Build Settings Linking中的Other Linker Flags. 中填入-ObjC。 如下图所示:

2.4.4 编写代码

介绍代码的实现过程,也可参考Demo的代码实现。

3 功能演示

3.1 下发验证码场景

当用户手机未通过智能验证时,需要下发短信/语音验证码的方式验证手机号的有效性。

流程说明:
1) 请求1的流程是发生在开发者自己的客户端和服务器,主要检测手机是否已经注册,如果未注册,则返回签名作为请求2中调用智能验证SDK的参数;

2) 请求2 执行下发验证码的操作,具体接口参数详见“接口调用“中的”请求验证“接口说明;

3) 请求3为提交验证码验证结果,检查用户的手机有效性;

4) 异步通知结果详见“5 服务器异步通知说明”;

3.2 智能验证通过场景

流程说明:
1) 请求1的流程是发生在开发者自己的客户端和服务器,主要检测手机是否已经注册,如果未注册,则返回签名作为请求2中调用智能验证SDK的参数;

2) 请求2 执行下发验证码的操作,具体接口参数详见“接口调用“中的”请求验证“接口说明;

3) 请求3为提交验证码验证结果,检查用户的手机有效性;

4) 异步通知结果详见“5 服务器异步通知说明”;

4 接口调用

4.1 初始化

/**
 * 初始化实例及代理设置
 */
- (UCSVerifyService *)initWithDelegate:(id)delegate;

4.2 请求验证

4.2.1 功能描述

用户在收到短信或语音下发的验证码后,输入提交验证,APP调用SDK来完成验证码的校验

4.2.2 接口说明
-(void)getVerificationCode:(NSString *)sid withAppid:(NSString *)appid withAppName:(NSString *)appName withCodetype:(int)codetype withPhone:(NSString *)phone withSeconds:(int)seconds withBusiness:(int)business withSign:(NSString *)sign;

参数说明:

名称 说明
sid 开发者主账号
appid 开发者应用ID
appName APP包名
codetype 保留字段(固定为1)
phone 手机号
seconds 替换模板中的“有效时间”参数,单位在模板里自定义,
如模板:你注册的验证码{1},请在{2}(秒/分钟)内输入。
此处参数会自动替换{2}参数
busines 验证业务类型,当前智能验证业务参数值为1
sign 签名
4.2.3 调用示例
//获取验证码
 
-(void)requestCode
{ //@"d5580902cab4d8853b06644a55ef720a" withAppid:@"6f06242e1fea4c699dcc9124ad4421a5"
    [self.ucsCallService getVerificationCode:@"4c1990a5c1ad2674bc94bc39a6fd0699" withAppid:@"efb7e1de9da649fa83881afea2841cd7" withAppName:@"测试DEMO" withCodetype:1 withPhone:self.txt_codePhone.text withSeconds:60 withBusiness:1 withSign:signString];
 
}

4.3 提交验证码验证

4.3.1 功能描述

用户在收到短信或语音下发的验证码后,输入提交验证,APP调用SDK来完成验证码的校验

4.3.2 接口说明
-(void)doVerificationCode:(NSString *)sid withAppid:(NSString *)appid withPhone:(NSString *)phone withVerifycode:(NSString *)verifycode;

参数说明:

名称 说明
sid 开发者主账号
appid 开发者应用ID
phone 用户手机号
verifycode 用户输入的验证码
4.3.3 调用示例
//点击“下一步” 验证
 
- (IBAction)bt_Verfy:(id)sender {
    [self.txt_codePhone resignFirstResponder];
    [self.txt_code resignFirstResponder];
 
    if (self.txt_code.text.length==0) {
        [self showtips:@"请输入验证码"];
        return;
    }
 
    [self.ucsCallService doVerificationCode:@"4c1990a5c1ad2674bc94bc39a6fd0699" withAppid:@"efb7e1de9da649fa83881afea2841cd7" withPhone:self.txt_codePhone.text withVerifycode:self.txt_code.text];
 
}

5 服务器异步通知参数说明

5.1 描述

当用户手机号在智能验证平台通过验证后,在返回SDK的HTTP结果时,执行异步线程通知开发者服务器的成功验证结果。开发者服务器在收到通知后,请注意做签名校验防止恶意请求。

5.2 列表

-表- 回调验证成功参数

参数 参数名称 类型 说明
appid 开发者id String 开发者在我方注册的应用id
phone 手机号 String 用户手机号
sign 签名 String 签名

5.3 样例

http://www.xxx.com/callback/?appid=00e1d21234567891024e1a123456cfa3&phone=13800038000&sign=9d801affd5eadd325b8217430ec809e6

签名字符串: (开发者主账号+应用ID+手机号+应用配置的密钥)

例如:
开发者主账号:0316894c88d389035113e4bf01c30e2f
应用ID:00e1d21234567891024e1a123456cfa3
手机号:13800038000
秘钥:private_key
MD5(0316894c88d389035113e4bf01c30e2f00e1d21234567891024e1a123456cfa313800038000private_key)
MD5后sign = 9d801affd5eadd325b8217430ec809e6 (注意是小写)

开发者服务器收到请求后返回: {“result”:”success”}

6 错误码

Ios SDK 错误码

参数 参数名称
401061 开发者号无效
401062 验证码错误
401063 验证码过期
401064 30s内重复请求
401065 签名错误
401066 手机号码无效
401067 已经注册过
401068 其他错误

页面工具