号码认证服务集成过程分为服务端集成和客户端集成,不同认证方式和不同客户端的集成方式略有不同。本文将为您介绍解号码认证、融合认证和短信认证的完整交互流程。
由于H5页面的低安全性,采用下发Token的形式进行身份校验,号码认证服务为H5页面集成开发了专属OpenAPI,在集成上与其他客户端集成存在一些差异,详情请参见H5页面Demo体验。
号码认证交互流程
一键登录
一键登录交互流程主要分为四个步骤:初始化、唤起授权页面、同意授权并登录、服务端取号。
初始化。
访问App页面。
SDK初始化。
唤起授权页面。
初始化成功后,调用
getLoginToken
唤起授权页面。SDK请求脱敏号码。
请求成功后会在授权页面展示脱敏号码及运营商协议供终端用户确认。
重要一键登录或注册需用户确认授权方可使用,且登录按钮文字描述必须包含“登录”、注册按钮文字描述必须包含“注册”等文字,不得诱导用户授权,开发者不得通过任何技术手段跳过或模拟此步骤,否则我方有权停止服务并追究相关法律责任。
对于接入移动认证SDK并上线的应用,阿里云对上线的应用授权页面做审查,若出现未按要求弹出或设计授权页面的,将停止应用的一键登录或注册服务。
为减少授权页唤起的等待时间,可预先判断用户是否需要进行登录或注册,如果需要可调用预取号接口,调用后会在终端侧缓存预取号信息,供后续流程使用。
请注意预取号(不收费)的频率,阿里云会在预取号与实际取号的比例异常时,停止提供相应的服务。
同意授权并登录。
确认授权页面的内容,并同意相关协议。
单击授权页面的登录或注册按钮,SDK会发起本次取号的Token获取。
获取成功后将Token返回给开发者App。
服务端取号。
开发者App将获得的取号Token传递至开发者服务器端。
开发者服务端携带Token调用号码认证服务端GetMobile接口。
号码认证服务端取得号码后将号码返回给开发者服务端。
重要由于运营商限制,客户端无法获取到手机号、手机掩码。
本机号码校验
本机号码校验交互流程主要分为三个步骤:初始化、获取认证参数、发起认证。
初始化。
用户访问App页面。
SDK初始化。
重要对于Android系统,当用户授权允许读取SIM卡数据时,初始化方法会同时返回从SIM卡读取到的手机号码,帮助用户提前填写手机号码。如果用户未授权或其它原因,则该函数仅返回是否支持号码认证。iOS系统不支持从SIM卡读取手机号码进行助填。
获取认证参数。
用户输入认证手机号码。
获取本机号码校验token。
发起认证。
开发者App向其服务端发起认证请求。
调用认证接口。开发者服务端调用本机号码校验认证VerifyMobile接口获取认证结果,判断用户输入的手机号码与用户终端当前访问网络的手机号码是否一致。
给客户端返回验证结果。
融合认证交互流程
集成阿里云SDK到客户端中,初始化并调用阿里云SDK。
对接阿里云APIGetFusionAuthToken获取鉴权Token,下发至客户端后传入SDK进行鉴权。
唤起场景授权页面,部分场景需要用户授权(同意隐私协议、获取短信验证码等)。
用户授权后,从SDK回调接口获取到换号Token后。
将换号Token上传到开发者的服务器,对接阿里云的服务端API接口VerifyWithFusionAuthToken,将Token转换为用户的手机号。
短信认证交互流程
短信认证服务可以与一键登录或本机号码校验SDK同时集成,提高用户登录或注册App时的认证覆盖率,快速实现用户认证。
Demo展示
上图一键登录功能失败后,通过短信认证服务继续完成认证。
交互流程
短信验证码的交互流程主要分为三个步骤:初始化、发送短信验证码、短信验证码校验。
初始化。
用户访问App。
开发者App服务器请求调用GetSmsAuthTokens接口获取短信验证码授权Token。
发送短信验证码
获取授权Token后,调用短信验证码SDK中的发送验证码接口发送短信验证码。其中Android客户端的SDK接入请参考Android客户端接入,调用sendVerifyCode方法进行验证码发送。iOS客户端的SDK接入请参考iOS客户端接入,调用sendVerifyCodeWithTimeout方法进行验证码发送。
终端用户会收到短信验证码,SDK侧会返回用于短信验证码校验的SmsToken。
短信验证码校验
终端用户输入短信验证码,单击登录。
开发者App侧提交SmsToken、手机号码、验证码至开发者服务器进行校验。
开发者服务器请求调用VerifySmsCode接口。