本文为您详细介绍uni-app开发框架集成号码认证服务原生语言插件的方法及本机号码校验相关方法的说明。
背景信息
uni-app原生语言插件
阿里云号码认证SDK插件是基于HBuilder提供的uni-app原生插件扩展能力开发出的认证插件,开发者可以轻松将阿里云号码认证能力集成到自己的项目中,在JS层实现相关功能。
本插件使用原生语言开发,仅支持在uni-app开发框架开发的Android或iOS应用中使用,无法在其他各类小程序中使用。
本插件仅适用于号码认证 SDK(一键登录和本机号码校验),不支持短信验证码登录;融合认证不支持 uni-app 框架。如需短信验证码功能,使用融合认证短信 API(服务端 SendSmsVerifyCode/CheckSmsVerifyCode),与号码认证 uni-app 插件组合接入。如需在 uni-app 项目中实现完整认证能力,可单独集成:号码认证 SDK(一键登录)、融合认证短信 API(短信验证码)、图形认证 SDK(图形校验),按业务需求自行搭配。
在项目中引入插件
-
创建uni-app项目。
-
如果您还未创建uni-app项目,请参见通过HBuilder可视化界面创建项目。
-
如果您已有项目,可直接进入下一步。
-
-
下载插件。
-
访问插件地址:阿里云号码认证SDK,进入插件详情页。
-
点击界面右侧的下载 for 离线打包下载插件。
-
-
项目中引入插件。
-
在项目的根目录新建nativeplugins文件夹,将下载的AliCloud-NirvanaPns_x.x.x.zip解压后引入
nativeplugins文件夹。将插件放入项目根目录下的nativeplugins文件夹,其中包含AliCloud-NirvanaPns目录,该目录下有android、ios子文件夹以及license.md和package.json文件。 -
打开根目录
manifest.json文件,单击App原生插件配置 > 选择本地插件。 -
在本地插件选择对话框,勾选阿里云号码认证SDK。
-
单击确定即可引入。
-
创建方案号
请参见:创建认证方案并获取方案Code。
交互流程详解
完整的功能交互流程请参见本机号码校验交互流程。
方法说明
引入方式
在vue或者nvue文件中,通过使用uni.requireNativePlugin方法引入原生插件。
调用示例
const aLiSDKModule = uni.requireNativePlugin('AliCloud-NirvanaPns');
setAuthSDKInfo(设置密钥)
方法说明:必调方法。
使用一键登录前,需要先设置密钥,并确保密钥跟Bundle Id或包名匹配。
参数说明: setAuthSDKInfo(info)
|
参数 |
类型 |
说明 |
|
info |
String |
阿里云号码认证控制台生成的密钥 |
调用示例
aLiSDKModule.setAuthSDKInfo("<SDK_INFO>"); //替换为从控制台获取的密钥
accelerateVerify(加速号码校验)
加速本机号码校验Token的获取。
建议在调用获取本机号码校验Token方法前,提前一段时间调用该加速方法,中间最好有2~3秒的缓冲(因为加速方法需要1~3秒的时间取得临时凭证)。
尽量不要多次调用。
打开App就获取本机号码校验Token的场景不需要调用此方法。
参数说明:accelerateVerify(timeout, callback)
参数 | 类型 | 说明 |
timeout | Number | 设置接口超时时间,单位:毫秒。 |
callback(args) | Function | 回调函数。回调函数入参结构如下:
|
调用示例
aLiSDKModule.accelerateVerify(5000, (result) => {
console.log(JSON.stringify(result));
if ("600000" == result.resultCode) {
console.log("加速获取本机号码校验Token成功");
} else {
console.log("加速获取本机号码校验Token失败," + result.msg);
}
});
getVerifyToken(获取本机号码校验Token)
获取本机号码校验Token。
参数说明:getVerifyToken(timeout, callback)
参数 | 类型 | 说明 |
timeout | Number | 设置接口超时时间,单位:毫秒。 |
callback(args) | Function | 回调函数。回调函数入参结构如下:
|
调用示例
aLiSDKModule.getVerifyToken(5000, (result) => {
if ("600000" == result.resultCode) {
console.log(
"获取本机号码校验token成功,接下面需要拿手机号和token去服务端进行校验,SDK服务到此结束"
);
}
});getVersion(获取号码认证SDK版本号)
参数说明:getVersion(callback)
|
参数 |
类型 |
说明 |
|
callback(version) |
Function |
回调函数。回调函数入参结构如下:
|
调用示例
aLiSDKModule.getVersion((version) => {
console.log("当前SDK版版本号为:" + version);
});
checkEnvAvailable(环境检查)
检查当前环境是否支持一键登录/本机号码校验。
参数说明:checkEnvAvailable(authType, callback)
|
参数 |
类型 |
说明 |
|
authType |
Number |
检查类型:
|
|
callback(args) |
Function |
回调函数。回调函数入参结构如下:
|
调用示例
aLiSDKModule.checkEnvAvailable(2, (result) => {
if ("600000" == result.resultCode) {
uni.navigateTo({
animationDuration: 300,
url: "../login/login",
});
} else {
console.log("当前环境不支持一键登录,result = ", JSON.stringify(result));
uni.showToast({
icon: "none",
title: result.msg,
duration: 3000,
});
}
});
getCurrentCarrierName(获取默认上网卡运营商)
参数说明:getCurrentCarrierName(callback)
|
返回值 |
类型 |
说明 |
|
callback(carrierName) |
Function |
回调函数。回调函数入参结构如下:
|
调用示例
aLiSDKModule.getCurrentCarrierName((carrierName) => {
console.log("当前运营商为:" + carrierName);
});
setCheckboxIsChecked(设置勾选框是否自动勾选)
参数说明
参数 | 类型 | 说明 |
isChecked | Number | 是否自动勾选。
|
调用示例
aLiSDKModule.setCheckboxIsChecked(true)closePrivactAlertView(关闭二次授权弹窗)
调用示例
aLiSDKModule.closePrivactAlertView()