HarmonyOS 用户认证问题

这个文档中https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-useriam-userauth-V5#userauthgetenrolledstate12

getEnrolledState12,

问题1:查询凭据注册的状态,用于感知用户注册凭据变化。如何使用的?

问题2:返回结果EnrolledState:credentialDigest和credentialCount都是number类型,能否提供个demo

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

可以参考指纹认证demo:

可以先录一个指纹,查询用户注册凭据变化,看具体返回值

再录一个指纹,再查询,可以看到返回的credentialDigest和credentialCount是有变化

返回结果是{“credentialDigest”:51901,“credentialCount”:2}的样式

一般应用场景是:业务开通时,从认证成功结果中获取用户凭据的状态,或者直接查询用户凭据的状态,将注册的凭据状态存储起来。当调用者需要感知用户凭据变化时,需要从当前认证成功结果获取凭据的状态,或者查询当前凭据的状态,通过对比差异感知凭据状态的变化。

具体可参考指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/it_uff08_u7528_u6237_u8ba4_u8bc1_u670d_u52a1_uff09-V5

import { promptAction } from '@kit.ArkUI';
import userIAM_userAuth from '@ohos.userIAM.userAuth';

const TAG = 'User_Auth'

@Entry
@Component
struct Index {
  @State userAuthResult?: userIAM_userAuth.UserAuthResult = undefined
  build() {
    Column() {
      Button('查询是否支持指纹和ATL1认证').margin({ bottom: 20 }).onClick(() => {
        this.checkAvailableStatus(userIAM_userAuth.UserAuthType.FINGERPRINT, userIAM_userAuth.AuthTrustLevel.ATL1)
      })
      Button('查询用户注册凭据变化').margin({ bottom: 20 }).onClick(() => {
        let enrolledState = userIAM_userAuth.getEnrolledState(userIAM_userAuth.UserAuthType.FINGERPRINT);
        console.info('get current enrolled state success, enrolledState = ' + JSON.stringify(enrolledState));
      })
      Button('拉起指纹认证').margin({ bottom: 20 }).onClick(() => {
        const authParam: userIAM_userAuth.AuthParam = {
          challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
          authType: [userIAM_userAuth.UserAuthType.FINGERPRINT],
          authTrustLevel: userIAM_userAuth.AuthTrustLevel.ATL1
        }
        const widgetParam: userIAM_userAuth.WidgetParam = { title: '请认证指纹' };
        this.startUserAuth(authParam, widgetParam)
      })
    }
  }

  checkAvailableStatus(authType: number, trustLevel: number) {
    try {
      userIAM_userAuth.getAvailableStatus(authType, trustLevel);
      promptAction.showToast({ message: '支持' })
    } catch (e) {
      promptAction.showToast({ message: '不支持' })
    }
  }

  startUserAuth(authParam: userIAM_userAuth.AuthParam, widgetParam: userIAM_userAuth.WidgetParam) {
    try {
      const userAuthInstance = userIAM_userAuth.getUserAuthInstance(authParam, widgetParam);
      userAuthInstance.on('result', {
        onResult: (result) => { //认证成功
          if (result.result === userIAM_userAuth.UserAuthResultCode.SUCCESS) {
            this.userAuthResult = result;
            console.log(TAG, 'userAuthInstance callback result ' + JSON.stringify(result));
            userAuthInstance.off('result');
          }
        }
      })
      userAuthInstance.start();
      console.log('auth start success');
    } catch (e) {
      promptAction.showToast({ message: `拉起用户认证失败 ${e.code} ${e.message}` })
    }
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
用户认证功能有哪些?
849浏览 • 1回复 待解决
HUKS用户认证通过PIN生成密钥
1046浏览 • 1回复 待解决
HarmonyOS UserAuthenticationKit认证问题
148浏览 • 1回复 待解决
HarmonyOS 企业认证开通多账号问题
27浏览 • 1回复 待解决
HarmonyOS 升级之后统一认证交互问题
428浏览 • 0回复 待解决
HarmonyOS申请用户位置权限问题
528浏览 • 1回复 待解决
关于MySQL用户权限的问题
2382浏览 • 1回复 待解决
HarmonyOS FiDO人脸认证失败
30浏览 • 1回复 待解决
HarmonyOS 滑块认证的demo
181浏览 • 1回复 待解决
proxyro用户问题有懂的吗?
4521浏览 • 1回复 待解决