本文为您介绍鸿蒙客户端本机号码校验的集成方法及接口的功能示例。
一键登录服务必须打开蜂窝数据流量并且手机系统给予应用蜂窝数据权限才能使用。
取号请求过程需要消耗用户少量数据流量。
移动运营商支持2G、3G、4G、5G数据流量,2G、3G因为网络环境问题时延和成功率会比4G低。
电信运营商支持4G、5G数据网络,不支持2G、3G数据流量。
联通运营商支持3G、4G、5G数据网络,不支持2G。
接入步骤
申请认证方案密钥
调用API的过程会使用对应的方案Code和密钥等参数信息。请先在号码认证产品控制台,创建认证方案获取方案Code和密钥等参数信息。创建认证方案时需要提供您的App名称、包名、包签名以及AppId。
获取签名
您可通过以下鸿蒙官方代码,获取应用相关属性(包名、包签名和AppId)。
bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO).then((bundleInfo) => {
const packageName = bundleInfo.name
console.log("numberauth:pagname:" + packageName)
const sign = bundleInfo.signatureInfo.fingerprint
console.log("numberauth:sign:" + sign)
const appIdentifier = bundleInfo.signatureInfo.appIdentifier
console.log("numberauth:appid:" + appIdentifier)
})
对应用签名
如果您还未对新创建的项目进行签名,建议您通过DevEco Studio自动化签名方式对应用签名:
使用自动签名功能实现签名,点击IDE右上角Project Structure图标:
在弹出界面依次选择Project > Signing Configs,并勾选Automatically generate signature,等待自动签名完成即可,单击OK。
如您需要了解更多HarmonyOS应用配置签名信息,请参见HarmonyOS官方文档。
获取SDK
登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,选择号码认证鸿蒙平台,完成SDK下载。
导入项目
在DevEco Studio中建立或打开您的项目。
将下载的SDK压缩包解压后的
.har
文件拷贝至您项目的libs
扩展库目录下。在module下的
oh_package.json5
文件中添加SDK依赖:注意:非项目根目录下的
oh_package.json5
文件,建议您参考压缩包内的Demo项目。"dependencies": { "numberauth_standard": "file:libs/auth_number_product-2.0.1-log-online-standard-release.har" }
添加权限配置
编辑module.json5文件配置SDK相应权限:
"requestPermissions": [
{
"name": 'ohos.permission.INTERNET',
"name": 'ohos.permission.GET_NETWORK_INFO',
"name":"ohos.permission.SET_NETWORK_INFO"
}
]
权限 | 说明 |
INTERNET | 允许应用程序联网,用于访问网关和认证服务器。 |
GET_NETWORK_INFO | 获取网络状态,判断是否数据、Wi-Fi等。 |
SET_NETWORK_INFO | 允许应用配置数据网络,取号时需要切换到蜂窝网络。 |
交互流程详解
完整的功能交互流程请参见本机号码校验。
SDK方法说明
必调方法:创建功能入口实例
PhoneNumberAuthHelper
是SDK的功能入口,所有的接口调用都需要通过PhoneNumberAuthHelper
进行。
必调方法:设置密钥
public setAuthSDKInfo(secretInfo: string): void
参数说明:
参数 | 参数类型 | 参数说明 |
secretInfo | string | SDK密钥,在号码认证控制台申请认证方案获得。 |
必调方法:清除流程回调监听
在流程完成后需调用该方法清除监听避免后台监听:
public clearAuthListener():void
必调方法:获取本机号码校验token
调用该方法获取本机号码Token
//totalTime 超时时间单位ms
public getVerifyToken(totalTime: number): Promise<void>;;
参数说明:
参数 | 参数类型 | 参数说明 |
totalTime | number | 超时时间设置 |
调用示例:
this.helper.getVerifyToken(5000)
在入口监控回调中返回Token:
class TokenListener implements TokenResultListener{
private page:Index
constructor(page: Index) {
this.page = page;
}
onSuccess(msg: string): void {
console.log("auth:onSuccess:"+msg)
const result:object=JSON.parse(msg)
const code=result['_code']+''
const token=result['_token']+''
if(code=="600000"){
this.page.quitLoginPage()
}
}
onFailure(ret: string): void {
console.log("auth:onFailure:"+ret)
this.page.updateAuth()
}
}
选调方法:本机号码校验加速接口
加速接口可以加快本机号码校验接口获取token速度,可提前调用,如hap初始化时
public accelerateVerify(overdueTimeMills: number, listener: PreLoginResultListener): void
参数说明:
参数 | 参数类型 | 参数说明 |
overdueTimeMills | number | 超时时间,单位:ms。 |
listener | PreLoginResultListener | 回调监听接口 |
选调方法:设置回调监听
添加或更新流程监听接口:
public setAuthListener(listener: TokenResultListener): void
参数说明:
参数 | 参数类型 | 参数说明 |
listener | TokenResultListener | 添加或更新流程监听接口。 |
选调方法:检测运行环境
检测运行环境,判断设备环境是否适合SDK运行,结果会在接口回调监控中返回:
public checkEnvAvailable(type: number): void
参数说明:
参数 | 参数类型 | 参数说明 |
type | number | SDK功能类型。取值:1,一键登录;2,是本机号码校验。 |
SDK返回码
调用号码认证鸿蒙客户端SDK过程中返回的错误码请参见阿里云号码认证SDK返回码说明(鸿蒙客户端专属)。
SDK导入失败问题解决
SDK引入后,点击IDE右上角同步即可正常导入。
若出现无法导入情况:
需要将引入module的oh_modules及项目根目录下oh_modules删除。
然后在DevEco Studio底部Terminal中输入
ohpm install
重新导入即可。