当前位置: 首页 > news >正文

Uniapp生物识别(SOTER)

一、功能分析

功能概述

  • 检查设备是否支持面容/指纹识别
  • 检查用户是否已录入相关生物特征
  • 显示可用的识别方式(如“指纹识别”、“面容识别”)
  • 点击后调起系统级生物识别弹窗

需要用到的Uniapp的Api

  • uni.checkIsSupportSoterAuthentication():检测支持的认证方式
  • uni.checkIsSoterEnrolledInDevice():检查是否已录入生物特征
  • uni.startSoterAuthentication():启动生物识别

二、完整代码


<template><view class="content"><view class="title-box">生物识别demo</view><view class="mode-box"><block v-for="(item,index) in authMode.mode" :key="index"><view class="mode" @click="startAuth(item)">{{item.text}}</view></block></view></view>
</template><script setup lang="ts">import { onShow } from "@dcloudio/uni-app";import { ref } from "vue";interface ModeInfo {mode : 'fingerPrint' | 'facial' | string;text : string;support : boolean;}onShow(()=>{checkAuthModeSupport();});/*** 检查设备支持的生物识别方式*/let authMode = ref({mode: [] as Array<ModeInfo>,support: false})const modeDes = {'facial': '面容识别','fingerPrint': '指纹识别'}async function checkAuthModeSupport() {let authModeRes = await uni.checkIsSupportSoterAuthentication();if(authModeRes.supportMode) {authModeRes.supportMode.forEach( async (mode) => {let creatureInfo = await uni.checkIsSoterEnrolledInDevice({checkAuthMode: mode });authMode.value.mode.push({mode,text: modeDes[mode],support: creatureInfo.isEnrolled});});}else {authMode.value.support = false;console.log('该设备不支持生物识别认证!')}}/*** 启动生物识别认证* @param modeInfo 选择的认证方式*/async function startAuth(modeInfo : ModeInfo) {let authRes = await uni.startSoterAuthentication({requestAuthModes: [modeInfo.mode] as any,challenge: '实际项目中 challenge 应为动态生成的唯一标识(如订单ID)', // 挑战因子为调用者为此次生物鉴权准备的用于签名的字符串关键识别信息,场景为请求用户对某订单进行授权确认,则可以将订单号填入此参数。authContent: `请进行${modeInfo.text}`,});if(authRes.errCode == 0) {console.log('识别成功');// TODO: 处理业务逻辑(如登录、支付确认等)}else {/* 其它错误码说明90001	本设备不支持生物认证90002	用户未授权使用该生物认证接口90003	请求使用的生物认证方式不支持90004	未传入challenge或challenge长度过长(最长512字符)90005	auth_content长度超过限制(最长42个字符)90007	内部错误90008	用户取消授权90009	识别失败90010	重试次数过多被冻结90011	用户未录入所选识别方式*/}}
</script><style scoped lang="scss">.content {padding: 20px 0;.mode-box {display: flex;align-items: center;justify-content: center;gap: 16px;.mode {opacity: 0.9;font-size: 12px;font-weight: bolder;}}.title-box {display: flex;font-size: 14px;font-weight: bolder;margin: 22px auto;justify-content: center;}}
</style>

三、运行测试

http://www.lryc.cn/news/612088.html

相关文章:

  • 【第5话:相机模型1】针孔相机、鱼眼相机模型的介绍及其在自动驾驶中的作用及使用方法
  • 第二十六天(数据结构:树(补充版程序请看下一篇))
  • 数字图像处理(冈萨雷斯)第三版:第四章——空间滤波与频域滤波(平滑与锐化)——主要内容和重点
  • 【PHP 抽象类完全指南(含 PHP 8.4 新特性)】
  • 02.【数据结构-C语言】顺序表(线性表概念、顺序表实现:增删查、前向声明、顺序表实现通讯录项目:增删改查、通讯录数据导入及保存到本地文件)
  • Linux操作系统启动项相关研究与总结
  • Redis面试精讲 Day 12:Redis Sentinel哨兵机制详解
  • 深度学习(pytorch版)前言:环境安装和书籍框架介绍
  • 单变量单步时序预测:CNN-GRU卷积神经网络结合门控循环单元
  • Linux系统编程——环境变量、命令行参数
  • mysql8.0主从节点克隆
  • Numpy科学计算与数据分析:Numpy入门之多平台安装与基础环境配置
  • 用NAS如何远程访问:详细教程与实用技巧
  • 强强联合:OpenAI正式登陆AWS!
  • 【motion】标签体系设计与检索 1:HumanML3D 和 KIT Motion-Language(KITML)
  • 《Vue 3与Element Plus构建多语后台的深层架构》
  • 导入Excel打印
  • GEAR:一种高效的 KV Cache 压缩方法,用于几乎无损的大语言模型生成式推理
  • 云手机对于网络游戏的作用
  • linux下的串口通信原理及编程实例
  • 【完整源码+数据集+部署教程】耳镜耳部疾病分类系统源码和数据集:改进yolo11-HSFPN
  • Centos 安装 redis
  • 理解生成统一模型技术调研报告
  • 北京-4年功能测试2年空窗-报培训班学测开-第六十九天-投简历第一天-从兴奋到害怕
  • GPT-OSS-20B vs Qwen3-14B 全面对比测试
  • 8月6日星期三今日早报简报微语报早读
  • 【数字图像处理系列笔记】Ch04:灰度变换与空间域图像增强(2)
  • LeetCode——118. 杨辉三角
  • APP 中 AI 驱动的智能音乐推荐与个性化播放列表生成
  • 局域网内某服务器访问其他服务器虚拟机内相关服务配置