是否有使用指纹解锁、人脸解锁的demo代码示例?

希望提供应用使用指纹解锁、人脸解锁的demo代码示例。

HarmonyOS
2024-10-11 12:00:39
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

人脸认证参考demo如下:

import userIAM_userAuth from '@ohos.userIAM.userAuth';  
import { promptAction } from '@kit.ArkUI';  
import type { BusinessError } from '@ohos.base';  
  
@Entry  
@Component  
struct FaceLockPage {  
  build() {  
    Column() {  
      Button('查询是否支持人脸和ATL3认证').margin({ bottom: 20 }).onClick(() => {  
        this.checkAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL3)  
      })  
      Button('拉起人脸认证')  
        .margin({ bottom: 20 })  
        .onClick(() => {  
          // 设置认证参数  
          const authParam: userIAM_userAuth.AuthParam = {  
            challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),  
            authType: [userIAM_userAuth.UserAuthType.FACE],  
            authTrustLevel: userIAM_userAuth.AuthTrustLevel.ATL3,  
          };  
          // 配置认证界面  
          const widgetParam: userIAM_userAuth.WidgetParam = {  
            title: '请进行身份认证',  
          };  
          try {  
            // 获取认证对象  
            let userAuthInstance = userIAM_userAuth.getUserAuthInstance(authParam, widgetParam);  
            console.log('get userAuth instance success');  
            // 订阅认证结果  
            userAuthInstance.on('result', {  
              onResult(result) {  
                console.log('userAuthInstance callback result = ' + JSON.stringify(result));  
                userAuthInstance.off('result');  
              }  
            });  
            userAuthInstance.start();  
            console.log('auth start success');  
          } catch (error) {  
            const err: BusinessError = error as BusinessError;  
            console.log(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);  
          }  
        })  
    }.width('100%').height('100%')  
  }  
  
  checkAvailableStatus(authType: number, trustLevel: number) {  
    try {  
      userIAM_userAuth.getAvailableStatus(authType, trustLevel)  
      promptAction.showToast({  
        message: '支持'  
      })  
    } catch (e) {  
      promptAction.showToast({  
        message: '不支持'  
      })  
    }  
  }  
}

指纹识别参考demo如下:

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(() => {  
        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}` })  
    }  
  }  
}

拉起人脸认证,首先需要在手机->设置->生物识别和密码->人脸识别,进行人脸录入,拉起指纹识别,需要在手机->设置->生物识别和密码->指纹,进行指纹录入。均需要先设置需要拉起的认证,代码才能正常跑,否则认证会提示不支持同时,也需要申请ohos.permission.ACCESS_BIOMETRIC权限,应用才能使用生物特征识别能力(如人脸、指纹)进行身份认证。具体可参考指南:用户身份认证开发指导->。https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/user-authentication-dev-V5

分享
微博
QQ
微信
回复
2024-10-11 17:14:29
相关问题
升级鸿蒙后无指纹解锁
25052浏览 • 1回复 待解决
有使用华为支付示例代码
1715浏览 • 1回复 待解决
HarmonyOS 消息通知使用示例demo
267浏览 • 1回复 待解决
xComponet示例代码不能使用
824浏览 • 1回复 待解决
使用华为账号服务登录示例代码
1700浏览 • 1回复 待解决
使用hiappevent获取崩溃日志示例代码
1838浏览 • 1回复 待解决
H5原生调JSbrigedemo示例
135浏览 • 1回复 待解决
HarmonyOS有使用墓碑机制么?
331浏览 • 1回复 待解决
HarmonyOS 数据库相关示例代码参考
100浏览 • 1回复 待解决
如何使用原生能力人脸识别api?
176浏览 • 1回复 待解决
HarmonyOS 需要pullToRefresh二层楼demo示例
301浏览 • 1回复 待解决