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

uni-app 面容、指纹识别插件(uni-face-login)

面容、指纹识别插件(uni-face-login)

介绍

人脸指纹登录授权,可以使用手机自带的人脸、指纹进行生物识别,进而判断是否机主本人,从而进行授权验证,适配安卓、iOS、鸿蒙设备

猛戳这里去插件市场看看

使用

该插件支持鸿蒙、安卓、iOS系统设备;

鸿蒙设备测试面容、指纹适配正常;

最低支持安卓5.0,因为安卓6.0开始才有的指纹,6.0以下会返回错误码,6.0或6.0以上正常,且国内厂商禁止使用人脸认证,只能调起指纹识别

iOS最低支持11.0,设备会先进行面容识别(iOS从iphonex开始有的面容识别,之前版本支持指纹识别),认证失败两次会进行密码认证,继续失败手机会锁住,锁屏时间会累加

更多定制功能请联系微信:soushin6

vue代码调用示例

<template><view><view style="height: 50rpx;"></view><button @click="callInit()">Sdk初始化</button><view style="height: 50rpx;"></view><button @click="callNative()">人脸登录</button><view style="height: 50rpx;"></view><button @click="callSupport()">是否支持人脸、指纹认证</button><view style="height: 50rpx;"></view><button @click="callDebug()">调试日志开关配置</button></view>
</template><script>var faceLogin = uni.requireNativePlugin("CZ-FaceLogin")export default {data() {return {}},methods: {callInit(){var ret = faceLogin.createFace();uni.showModal({title:'提示',content:JSON.stringify(ret)})},callNative(){console.log("调用原始方法")faceLogin.authLogin({'fingerTitle': '123指纹识别','fingerContent': '请123使用指纹识别','loadingText':'识别。。。','passwordHint':'请输入密码,确保环境安全'},(ret) => {console.log(ret)uni.showModal({title:'提示',content:JSON.stringify(ret)})})},callSupport(){faceLogin.isSupport((ret)=>{uni.showModal({title:'提示',content:JSON.stringify(ret)})});},callDebug(){var ret = faceLogin.debug({'enableLog': true,});uni.showModal({title:'提示',content:JSON.stringify(ret)})}, }}
</script><style></style>

nvue代码调用示例


<template><div><div style="height: 50rpx;"></div><button @click="callInit">Sdk初始化</button><div style="height: 50rpx;"></div><button @click="callNative">人脸登录</button><div style="height: 50rpx;"></div><button @click="callSupport">是否支持人脸、指纹认证</button><div style="height: 50rpx;"></div><button @click="callDebug">调试日志开关配置</button></div>
</template><script>var faceLogin = uni.requireNativePlugin("CZ-FaceLogin")export default {onLoad() {uni.setNavigationBarTitle({title:"人脸认证nvue"})},methods: {callInit(){var ret = faceLogin.createFace();uni.showModal({title:'提示',content:JSON.stringify(ret)})},callNative(){faceLogin.authLogin({'fingerTitle': '指纹识别','fingerContent': '请使用指纹识别','loadingText':'识别。。。','passwordHint':'请输入密码,确保环境安全'},(ret) => {uni.showModal({title:'提示',content:JSON.stringify(ret)})})},callSupport(){faceLogin.isSupport((ret)=>{uni.showModal({title:'提示',content:JSON.stringify(ret)})});},callDebug(){var ret = faceLogin.debug({'enableLog': true,});uni.showModal({title:'提示',content:JSON.stringify(ret)})}, }}
</script>
<style>
</style>

权限申请

鸿蒙 + android

	//离线打包需要在AndroidManifest.xml里面增加<uses-permission android:name="android.permission.USE_BIOMETRIC" /><uses-permission android:name="android.permission.USE_FINGERPRINT" /><uses-permission android:name="android.permission.CAMERA" /><uses-sdk tools:overrideLibrary="com.huawei.security.localauthentication"/>

iOS

	//离线打包需要在info.plist里面增加NSFaceIDUsageDescription

API调用说明

API描述参数必须
createFace()初始化识别SDK,在调用其他api之前必须调用此方法,否则会返回504
authLogin()开始识别fingerTitle 安卓指纹识别标题,
fingerContent 安卓指纹识别描述,
loadingText 鸿蒙、安卓面容识别等待框提示文本,
passwordHint iOS密码认证的提示文本;
callback:返回内容见下方错误码说明
isSupport()当前设备是否支持生物识别(指纹/面容)callback:返回code=0支持,code=1不支持
debug()设置调试日志输出开关enableLog true开 false关,默认关

错误码

错误码描述
0识别成功
1识别失败
2设备识别错误,请结合下方附录,或查看开发文档
3帮助信息,一些距离远近、识别角度等一些提示,看需处理
4取消
501当前系统未录入信息
502当前系统不支持人脸识别,或是人脸识别权限未开
503当前系统不支持生物识别
504请调用createFace()初始化SDK

附录

鸿蒙错误码

错误码描述解决方法
FACE_ERROR_HW_UNAVAILABLE1硬件不可用。请确认设备类型和OS版本是否支持,参见支持的设备。
FACE_ERROR_UNABLE_TO_PROCESS2传感器无法处理当前图像。如问题反复出现,请使用在线提单联系维护人员。
FACE_ERROR_TIMEOUT3人脸识别超时。请在短时间内完成识别。
FACE_ERROR_NO_SPACE4没有足够的存储空间。人脸识别不会返回此错误码。-
FACE_ERROR_CANCELED5硬件临时不可用,操作被取消。请稍后重试。
FACE_ERROR_UNABLE_TO_REMOVE6删除人脸失败。人脸识别不会返回此错误码。-
FACE_ERROR_LOCKOUT7人脸失败次数过多,人脸识别锁定。请稍后重试。
FACE_ERROR_VENDOR8人脸与机主人脸不匹配。如机主无法认证通过,建议重新录入人脸后重试。
FACE_ERROR_LOCKOUT_PERMANENT9人脸失败次数过多,弱认证锁定。请使用强认证(如PIN码)解锁。
FACE_ERROR_USER_CANCELED10FACE_ERROR_USER_CANCELED-
FACE_ERROR_NOT_ENROLLED11用户未录入人脸。请录入人脸。
FACE_ERROR_HW_NOT_PRESENT12FACE_ERROR_HW_NOT_PRESENT请确认设备类型和OS版本是否支持,参见支持的设备。

Android
面容错误码
指纹错误码

面容错误码描述解决方法
BIOMETRIC_ERROR_HW_UNAVAILABLE1硬件不可用。请确认设备类型和OS版本是否支持。
BIOMETRIC_ERROR_NONE_ENROLLED11用户没有注册任何生物信息建议录入人脸后重试。
BIOMETRIC_ERROR_NO_HARDWARE12没有生物识别硬件。-
BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED15已发现安全漏洞,并且在安全更新解决此问题之前,传感器将不可用。-
BIOMETRIC_SUCCESS0识别成功-
指纹错误码描述解决方法
FINGERPRINT_ACQUIRED_GOOD0获取指纹成功-
FINGERPRINT_ACQUIRED_IMAGER_DIRTY3怀疑或检测到传感器上有污垢,指纹图像噪音太大。清洁后重试。
FINGERPRINT_ACQUIRED_INSUFFICIENT2皮肤干燥或传感器可能脏污。清洁后重试。
FINGERPRINT_ACQUIRED_PARTIAL1采集到部分指纹。应告知用户需要采取什么措施来解决此问题,例如“用力按压传感器”。
FINGERPRINT_ACQUIRED_TOO_FAST5采集期间移动手指,指纹图像不完整将手指在传感器上停留更长时间,适合线性阵列传感器。
FINGERPRINT_ACQUIRED_TOO_SLOW4缺乏移动,导致指纹读取失败请移动手指,适合需要滑动运动的线性阵列传感器。
FINGERPRINT_ERROR_CANCELED5操作被取消,当用户切换、设备被锁定或另一个待处理操作阻止或禁用它时,可能会发生这种情况稍后再试
FINGERPRINT_ERROR_HW_NOT_PRESENT12设备不支持指纹传感器请确认设备类型和OS版本是否支持。
FINGERPRINT_ERROR_HW_UNAVAILABLE1硬件不可用请稍后再试。
FINGERPRINT_ERROR_LOCKOUT7操作被取消,因为 API 由于尝试次数过多而被锁定。此情况会在 5 次失败尝试后发生,并持续 30 秒。请稍后再试。
FINGERPRINT_ERROR_LOCKOUT_PERMANENT9由于 FINGERPRINT_ERROR_LOCKOUT 发生次数过多,操作被取消。在用户使用强身份验证(PIN/图案/密码)解锁之前,指纹身份验证将被禁用-
FINGERPRINT_ERROR_NO_FINGERPRINTS11用户没有登记任何指纹请录入指纹后重试。
FINGERPRINT_ERROR_NO_SPACE4没有足够的剩余存储空间来完成该操作-
FINGERPRINT_ERROR_TIMEOUT3等待过长导致超时-
FINGERPRINT_ERROR_UNABLE_TO_PROCESS2无法处理当前指纹图像-
FINGERPRINT_ERROR_USER_CANCELED10用户已取消-

iOS错误码

错误码描述解决方法
appCancel-9该应用程序取消了身份验证。-
systemCancel-4系统取消了认证。-
userCancel-2用户点击身份验证对话框中的取消按钮。-
biometryDisconnected-13该设备仅使用可拆卸附件支持生物识别,但未连接配对的附件。-
biometryNotPaired-12该设备仅使用可拆卸配件支持生物识别,但未配对任何配件。-
biometryLockout-8由于失败的尝试次数过多,生物认证已被锁定。-
biometryNotAvailable-6该设备不支持生物识别。请确认设备是否支持。
biometryNotEnrolled-7用户没有注册生物识别身份。请注册。
authenticationFailed-1用户未能提供有效的凭据。-
invalidContext-10上下文不可用。-
invalidDimensions-14--
notInteractive-1004禁止显示所需的认证用户界面。-
passcodeNotSet-5设备上未设置密码。请设置密码后重试。
userFallback-3用户点击身份验证对话框中的回退按钮,但身份验证策略没有可用的回退按钮。-
watchNotAvailable-11尝试使用 Apple Watch 进行身份验证失败。请稍后重试。
  • 华为鸿蒙人脸认证SDK开发文档
  • Android人脸认证SDK开发文档
  • iOS人脸认证SDK开发文档

相关文章:

uni-app 面容、指纹识别插件(uni-face-login)

面容、指纹识别插件(uni-face-login) 介绍 人脸指纹登录授权&#xff0c;可以使用手机自带的人脸、指纹进行生物识别&#xff0c;进而判断是否机主本人&#xff0c;从而进行授权验证&#xff0c;适配安卓、iOS、鸿蒙设备 猛戳这里去插件市场看看 使用 该插件支持鸿蒙、安卓…...

专治疗懒病:GO、KEGG富集分析一体函数

之前我们写过GO、KEGG的富集分析&#xff0c;参见&#xff1a;补充更新&#xff1a;GO、KEGG&#xff08;批量分组&#xff09;分析及可视化。演示了差异基因KEGG或者GO的分析流程。其实差异基因的富集分析输入的文件只需要一组基因就可以了。所以我们发挥了专治懒病的优良传统…...

pygame第6课——贪吃蛇小游戏

今天我们开始Pygame的第六课&#xff0c;前几节课的内容在这里【点我】&#xff0c;欢迎大家前去考古&#xff1a; 今天我们一起来学习制作一个小游戏【贪吃蛇】&#xff0c;这是一个非常经典的小游戏&#xff0c;那么我们一起开始吧 1、游戏准备工作 import pygame, random,o…...

iptables之iptables表、链、规则 、匹配模式、扩展模块、连接追踪模块(一)

一、iptables的链 1.请求到达本机&#xff1a; PREROUTING --> INPUT --> Local Process &#xff08;本机&#xff09; 2.请求经过本机&#xff1a; PREROUTING --> FORWARD --> POSTROUTING 3.请求从本机发出&#xff1a;local Process&#xff08;本机&#xf…...

Mac 卸载appium

安装了最新版的appium 2.0.1,使用中各种问题&#xff0c;卡顿....,最终决定回退的。记录下卸载的过程 1.打开终端应用程序 2.卸载全局安装的 Appium 运行以下命令以卸载全局安装的 Appium&#xff1a; npm uninstall -g appium 出现报错&#xff1a;Error: EACCES: permiss…...

数据结构----哈夫曼树

这里写目录标题 基本概念引子基本概念各种路径长度各种带权路径长度结点的带权路径长度树的带权路径长度哈夫曼树 哈夫曼树的构造理论基础构造思想总结 哈夫曼树的实现哈夫曼编码前缀编码哈夫曼编码的思想案例代码实现 编码与解码 基本概念 引子 哈夫曼树就是寻找构造最优二叉…...

Spring之Aop切面---日志收集(环绕处理、前置处理方式)--使用/教程/实例

Spring之Aop切面---日志收集&#xff08;环绕处理、前置处理方式&#xff09;--使用/教程/实例 简介系统登录日志类LoginLogEntity .java 一、环绕处理方式1、自定义注解类LoginLogAop.class2、切面处理类LogoutLogAspect.java 二、前置处理方式&#xff1a;1、自定义注解类Log…...

UE4/UE5 照明构建失败 “Lightmass crashed”解决“数组索引越界”

在构建全局光照时,经常会出现“Lightmass crashed”的错误,导致光照构建失败。本文将分析这一问题的原因,并给出解决建议。 UE4 版本4.26 报错如下&#xff1a; <None> Lightmass crashed: Assertion failed: (Index > 0) & (Index < ArrayNum) [File:d:\bu…...

并发编程系列-Semaphore

Semaphore&#xff0c;如今通常被翻译为"信号量"&#xff0c;过去也曾被翻译为"信号灯"&#xff0c;因为类似于现实生活中的红绿灯&#xff0c;车辆是否能通行取决于是否是绿灯。同样&#xff0c;在编程世界中&#xff0c;线程是否能执行取决于信号量是否允…...

3年 Android 开发的面试心经(后悔当初没有拿 N+1)

作者&#xff1a;勇闯天涯 当某人顺利通过大厂面试时&#xff0c;总会有人认为这是运气比较好罢了&#xff0c;但他们不曾得知对方之前受过多少苦和委屈&#xff0c;又付出了多少努力一步步去突破这些困境。正是因为他们的努力付出&#xff0c;在合适的时间与地点&#xff0c;用…...

【c语言】 -- 指针进阶

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章来学习指针进阶。 让我们开启c语言学习…...

软件压力测试对软件产品起到什么作用?

一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况&#xff0c;来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中&#xff0c;经常会遇到一些性能瓶颈和稳定性问题&#xff0c;而软件压力测试的作…...

Stephen Wolfram:那么…ChatGPT 在做什么,为什么它有效呢?

So … What Is ChatGPT Doing, and Why Does It Work? 那么…ChatGPT在做什么&#xff0c;为什么它有效呢&#xff1f; The basic concept of ChatGPT is at some level rather simple. Start from a huge sample of human-created text from the web, books, etc. Then train…...

机器学习基础(五)

决策树 决策树是一种预测模型,它代表着对象属属性与对象值之间的一种映射关系。树中的每个节点代表一个对象,分叉路径(或者叫树枝)则代表一个属性值。 决策树常用方法: 分类树分析,是一种监督学习,用于预计结果可能为离散类型。 回归树分析,用于预计结果为实数。 CART,…...

阿里云服务器安装WordPress网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器安装WordPress博客网站教程&#xff0c;WordPress是使用PHP语言开发的博客平台&#xff0c;在支持PHP和MySQL数据库的服务器上&#xff0c;您可以用WordPress架设自己的网站&#xff0c;也可以用作内容管理系统&#xff08;CMS&#xff09;。本教…...

【100天精通python】Day37:GUI界面编程_PyQT从入门到实战(上)

目录 专栏导读 1 PyQt6 简介&#xff1a; 1.1 安装 PyQt6 和相关工具&#xff1a; 1.2 PyQt6 基础知识&#xff1a; 1.2.1 Qt 的基本概念和组件&#xff1a; 1.2.2 创建和使用 Qt 窗口、标签、按钮等基本组件 1.2.3 布局管理器&#xff1a;垂直布局、水平布局、网格布局…...

数据结构—散列表的查找

7.4散列表的查找 7.4.1散列表的基本概念 基本思想&#xff1a;记录的存储位置域关键字之间存在对应关系 ​ 对应关系——hash函数 ​ Loc&#xff08;i&#xff09; H&#xff08;keyi&#xff09; 如何查找&#xff1a; 根据散列函数 H(key) k 查找key9&#xff0c;则访…...

Expo项目 使用Native base UI库

装包&#xff1a; yarn add native-base expo install react-native-svg12.1.1 Index.js: import React from react import { View, Text } from react-native import useList from ./useList import { NativeBaseProvider, Button, Box } from native-base import styles f…...

74、75、76——tomcat项目实战

tomcat项目实战 tomcat 依赖 java运行环境,必须要有jre , 选择 jdk1.8 JvmPertest 千万不能用 kyj易捷支付 项目机器 选择 一台机器 ,安装jdk1.8的机器下载tomcat的包 上传到机器,解压tomcattomcat文件 bin文件夹: 启动文件 堆栈配置文件 catalina.sh JAVA_OPTS="-Xm…...

jmeter errstr :“unsupported field type for multipart.FileHeader“

在使用jmeter测试接口的时候&#xff0c;提示errstr :"unsupported field type for multipart.FileHeader"如图所示 这是因为我们 在HTTP信息头管理加content-type参数有问题 直接在HTTP请求中&#xff0c;勾选&#xff1a; use multipart/form-data for POST【中文…...

DeepSeek系统设计辅助:如何在48小时内完成可审计、可回滚、可压测的AI服务架构图?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek系统设计辅助 DeepSeek系统设计辅助模块面向架构师与后端工程师&#xff0c;提供模型能力调用、接口契约生成、异步任务编排等核心支撑能力。该模块不替代人工设计决策&#xff0c;而是通过结构…...

用STM32CubeMX和HAL库快速上手WS2812B:告别手动计算延时,一键生成驱动框架

基于STM32CubeMX的WS2812B智能灯光控制&#xff1a;从零构建现代化驱动方案在智能硬件和物联网设备快速发展的今天&#xff0c;WS2812B可编程LED灯带因其丰富的色彩表现和简单的单线控制方式&#xff0c;成为创客和工程师们最喜爱的显示组件之一。然而&#xff0c;传统的寄存器…...

高性能Windows流媒体服务器部署:5大核心技术与3种实战架构深度解析

高性能Windows流媒体服务器部署&#xff1a;5大核心技术与3种实战架构深度解析 【免费下载链接】srs-windows 项目地址: https://gitcode.com/gh_mirrors/sr/srs-windows 在Windows平台上构建专业级流媒体服务系统&#xff0c;需要综合考虑协议兼容性、性能优化和部署架…...

51单片机驱动ST7735S彩屏避坑指南:从5秒刷屏到流畅贪吃蛇的优化实战

51单片机驱动ST7735S彩屏性能优化实战&#xff1a;从卡顿到流畅游戏的蜕变之路当一块128x160分辨率的ST7735S彩屏遇上传统的51单片机&#xff0c;这种组合看似矛盾却又充满挑战。许多开发者初次尝试时会发现&#xff0c;原本在STM32等平台上运行流畅的显示驱动&#xff0c;移植…...

【DeepSeek测试用例生成实战指南】:20年QA专家亲授5大高覆盖率生成模式与3个避坑红线

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek测试用例生成的核心价值与适用边界 DeepSeek系列大模型在代码理解与生成任务中展现出显著的上下文建模能力&#xff0c;其测试用例生成功能并非通用“黑盒测试器”&#xff0c;而是聚焦于**单元级、函…...

Taotoken用量看板功能详解,助你洞察团队AI资源消耗模式

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken用量看板功能详解&#xff0c;助你洞察团队AI资源消耗模式 对于技术管理者或项目负责人而言&#xff0c;清晰了解团队的AI…...

基于Arduino与蓝牙模块的六路无线开关控制系统设计与实现

1. 项目概述&#xff1a;用手机蓝牙控制六路LED想不想把手机变成一个无线遥控器&#xff0c;随手一点就能开关家里的灯带、氛围灯&#xff0c;甚至是其他电器&#xff1f;这个项目就是为你准备的。它基于一块功能增强的Arduino兼容板——GlowDuino Uno&#xff0c;配合一个极其…...

Godot 4.2 + C# 避坑指南:手把手教你打包发布你的第一个2D游戏到Steam

Godot 4.2 C# 避坑指南&#xff1a;从开发到Steam发布的完整实战手册当你终于完成心爱的2D游戏开发&#xff0c;准备向全世界展示你的作品时&#xff0c;打包发布这个看似简单的环节往往会成为独立开发者最大的噩梦。特别是使用Godot 4.2搭配C#的项目&#xff0c;从导出设置到…...

Lovable电商网站搭建,为什么92%的初创团队在第3周就遭遇性能雪崩?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Lovable电商网站搭建 Lovable 是一个面向中小商户的轻量级电商解决方案&#xff0c;采用现代 Web 技术栈构建&#xff0c;强调可扩展性、用户体验与快速部署。其核心基于 Vue 3&#xff08;Composition API&a…...

自然语言处理的实战项目:从0到1搭建属于自己的文本分类系统

对于软件测试从业者而言&#xff0c;日常工作中我们每天都会接触大量的文本数据&#xff1a;缺陷管理系统中的bug描述、测试用例的步骤说明、用户反馈的问题报告、需求文档的规格描述&#xff0c;甚至是接口返回的异常信息文本。这些非结构化文本往往隐含着关键业务信息&#x…...