鸿蒙客户端接入

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

说明

在使用过程中如有疑问,可以提交工单联系阿里云技术工程师处理。

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

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

  • 移动运营商支持2G、3G、4G、5G数据流量,2G、3G因为网络环境问题时延和成功率会比4G低。

  • 电信运营商支持4G、5G数据网络,不支持2G、3G数据流量。

  • 联通运营商支持3G、4G、5G数据网络,不支持2G。

接入步骤

申请认证方案密钥

您调用API接口时,会用到方案Code和密钥等参数信息,请先在号码认证产品控制台创建认证方案,获取方案Code和密钥等参数信息。

说明

上述应用相关属性(包名、包签名和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 > SigningConfigs,并勾选Automatically generate signature,等待自动签名完成即可,单击OK

    image

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

获取SDK

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

导入项目

  1. 在DevEco Studio中建立你的工程。

  2. 将下载的SDK压缩包解压后的har文件拷贝至项目的扩展库目录下(可参考压缩包提供的demo项目)。

    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

获取网络状态,判断是否数据、wifi等

SET_NETWORK_INFO

允许应用配置数据网络,取号时需要切换到蜂窝网络

交互流程详解

完整的功能交互流程请参见本机号码校验

SDK方法说明

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

PhoneNumberAuthHelper是SDK的功能入口,所有的接口调用都需要通过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. 需要将引入module的oh_modules及项目根目录下oh_modules删除。

    image

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

    image