鸿蒙客户端接入

本文为您介绍鸿蒙客户端本机号码校验的集成方法及接口的功能示例。

重要
  • 一键登录服务必须打开蜂窝数据流量并且手机系统给予应用蜂窝数据权限才能使用。

  • 取号请求过程需要消耗用户少量数据流量。

  • 移动运营商支持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自动化签名方式对应用签名:

  1. 使用自动签名功能实现签名,点击IDE右上角Project Structure图标:

    image

  2. 在弹出界面依次选择Project > Signing Configs,并勾选Automatically generate signature,等待自动签名完成即可,单击OK

    image

如您需要了解更多HarmonyOS应用配置签名信息,请参见HarmonyOS官方文档

获取SDK

登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,选择号码认证鸿蒙平台,完成SDK下载。

导入项目

  1. DevEco Studio中建立或打开您的项目。

  2. 将下载的SDK压缩包解压后的.har文件拷贝至您项目的libs扩展库目录下。

    image

  3. 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"
      }

    image

添加权限配置

编辑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方法说明

必调方法:创建功能入口实例

PhoneNumberAuthHelperSDK的功能入口,所有的接口调用都需要通过PhoneNumberAuthHelper进行。

方法原型

public static getInstance(context: Context, listener: TokenResultListener): PhoneNumberAuthHelper;

参数说明:

参数

参数类型

参数说明

context

Context

调用的上下文环境。

listener

TokenResultListener

流程监控回调。

调用示例

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()
    }
}

let listener = new TokenListener(this)
this.helper = PhoneNumberAuthHelper.getInstance(getContext(this), listener)

必调方法:设置密钥

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右上角同步即可正常导入。

image

若出现无法导入情况:

  1. 需要将引入moduleoh_modules及项目根目录下oh_modules删除。

    image

  2. 然后在DevEco Studio底部Terminal中输入ohpm install重新导入即可。

    image