如果您的项目使用了uni-app开发框架开发Android或者iOS应用,期望实现一键登录或本机号码校验功能,可通过本章节了解如何使用uni-app插件体验号码认证功能。更多SDK接入详情,请参见一键登录 > uni-app接入、本机号码校验 > uni-app接入 。
背景信息
uni-app原生语言插件
阿里云号码认证SDK插件是基于HBuilder提供的uni-app原生插件扩展能力开发出的认证插件,开发者可以轻松将阿里云号码认证能力集成到自己的项目中,在JS层实现相关功能。
本插件使用原生语言开发,仅支持在uni-app开发框架开发的Android或iOS应用中使用,无法在其他各类小程序中使用。
Demo体验
本文以uni-app开发Android应用为例,讲解Demo体验的完整配置过程。
访问插件地址:阿里云号码认证SDK,进入插件详情页。
点击界面右侧“下载示例项目ZIP”,下载Demo代码。
说明本插件免费,支持离线打包。
使用HBuilder打开Demo项目。
制作“自定义调试基座”。记录下Android包名,后面步骤需要使用。
说明本插件使用原生语言开发,需要打包自定义基座,制作详情请参见什么是自定义基座。
点击HBuilder顶部工具栏运行按钮 ,弹出菜单选择运行到Android App基座,弹出面板,选择使用自定义基座运行,点击运行按钮。
手机上打开编译后的应用。
创建专属于当前应用的号码认证方案,配置详情请参见号码认证方案管理。
说明操作系统:请选择Android。
包名:请填入创建自定义基座设置的包名称。
包签名:请先下载并安装Android APP签名获取工具,选择到当前demo应用,获取包签名。
复制当前认证方案中的密钥,替换掉Demo中App.vue的
sdkInfo
变量,保存后HBuilder会进行差量打包。
示例代码
引入插件&设置密钥
const aLiSDKModule = uni.requireNativePlugin('AliCloud-NirvanaPns');
aLiSDKModule.setAuthSDKInfo("从阿里云控制台获取的密钥");
密钥获取方法,请参见setAuthSDKInfo的密钥如何获取?
一键登录功能
aLiSDKModule.getLoginToken(
5000,
config,
(tokenResult) => {
uni.hideLoading();
console.log(JSON.stringify(tokenResult));
if ("600001" == tokenResult.resultCode) {
console.log("授权页拉起成功");
// 设置是否选中复选框
aLiSDKModule.setCheckboxIsChecked({
check: false,
});
} else if ("600000" == tokenResult.resultCode) {
console.log(
"获取Token成功,接下来拿着结果里面的Token去服务端换取手机号码,SDK服务到此结束"
);
//手动关闭授权页
aLiSDKModule.quitLoginPage();
} else {
//手动关闭授权页
aLiSDKModule.quitLoginPage();
}
},
(clickResult) => {
console.log(JSON.stringify(clickResult));
switch (clickResult.resultCode) {
case "700000":
console.log("用户点击返回按钮");
break;
case "700001":
console.log("用户切换其他登录方式");
break;
case "700002":
console.log("用户点击登录按钮");
if (!clickResult.result.isChecked) {
//Toast样式可参考:https://www.html5plus.org/doc/zh_cn/nativeui.html#plus.nativeUI.toast
plus.nativeUI.toast("请同意服务条款(ps:这个Toast需手动添加)");
}
break;
case "700003":
console.log("用户点击checkBox");
break;
case "700004":
console.log("用户点击协议");
break;
}
},
(customUiResult) => {
console.log("点击了自定义控件 " + JSON.stringify(customUiResult));
if ("close" == customUiResult.widgetId) {
//点击了自定义的关闭授权页按钮
aLiSDKModule.quitLoginPage();
} else {
plus.nativeUI.toast(
"点击了自定义按钮,widgetId:" + customUiResult.widgetId
);
}
}
);
本机号码校验功能
aLiSDKModule.getVerifyToken(5000, (result) => {
uni.hideLoading();
console.log(JSON.stringify(result));
let msg = "";
if ("600000" == result.resultCode) {
msg =
"获取本机号码校验token成功,接下面需要拿手机号和token去服务端进行校验,SDK服务到此结束";
} else {
msg = "获取本机号码校验Token失败," + result.msg;
}
// 控制台输出和屏幕提示
console.log(msg);
uni.showToast({
icon: "none",
title: msg,
duration: 3000,
});
});