是否有使用指纹解锁、人脸解锁的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: '不支持'  
      })  
    }  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.

指纹识别参考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}` })  
    }  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.

拉起人脸认证,首先需要在手机->设置->生物识别和密码->人脸识别,进行人脸录入,拉起指纹识别,需要在手机->设置->生物识别和密码->指纹,进行指纹录入。均需要先设置需要拉起的认证,代码才能正常跑,否则认证会提示不支持同时,也需要申请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


相关问题
升级鸿蒙后无指纹解锁
26206浏览 • 1回复 待解决
有使用华为支付示例代码
2209浏览 • 1回复 待解决
HarmonyOS 屏幕锁屏和解锁屏幕
641浏览 • 1回复 待解决
HarmonyOS 如何感知屏幕解锁
427浏览 • 1回复 待解决
HarmonyOS 消息通知使用示例demo
899浏览 • 1回复 待解决
xComponet示例代码不能使用
1422浏览 • 1回复 待解决
使用hiappevent获取崩溃日志示例代码
2435浏览 • 1回复 待解决
使用华为账号服务登录示例代码
2309浏览 • 1回复 待解决