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_UNAVAILABLE 1 硬件不可用。 请确认设备类型和OS版本是否支持,参见支持的设备
FACE_ERROR_UNABLE_TO_PROCESS 2 传感器无法处理当前图像。 如问题反复出现,请使用在线提单联系维护人员。
FACE_ERROR_TIMEOUT 3 人脸识别超时。 请在短时间内完成识别。
FACE_ERROR_NO_SPACE 4 没有足够的存储空间。人脸识别不会返回此错误码。 -
FACE_ERROR_CANCELED 5 硬件临时不可用,操作被取消。 请稍后重试。
FACE_ERROR_UNABLE_TO_REMOVE 6 删除人脸失败。人脸识别不会返回此错误码。 -
FACE_ERROR_LOCKOUT 7 人脸失败次数过多,人脸识别锁定。 请稍后重试。
FACE_ERROR_VENDOR 8 人脸与机主人脸不匹配。 如机主无法认证通过,建议重新录入人脸后重试。
FACE_ERROR_LOCKOUT_PERMANENT 9 人脸失败次数过多,弱认证锁定。 请使用强认证(如PIN码)解锁。
FACE_ERROR_USER_CANCELED 10 FACE_ERROR_USER_CANCELED -
FACE_ERROR_NOT_ENROLLED 11 用户未录入人脸。 请录入人脸。
FACE_ERROR_HW_NOT_PRESENT 12 FACE_ERROR_HW_NOT_PRESENT 请确认设备类型和OS版本是否支持,参见支持的设备

Android
面容错误码
指纹错误码

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

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 进行身份验证失败。 请稍后重试。
相关推荐
BoomHe2 天前
Android AOSP13 原生 Launcher3 壁纸获取方式
android
Digitally2 天前
如何将联系人从 Android 转移到 Android
android
用户223586218202 天前
WebKit WebPage API 的引入尝试与自研实现
ios
李小枫2 天前
webflux接收application/x-www-form-urlencoded参数
android·java·开发语言
爱丽_2 天前
MySQL `EXPLAIN`:看懂执行计划、判断索引是否生效与排错套路
android·数据库·mysql
NPE~2 天前
[App逆向]环境搭建下篇 — — 逆向源码+hook实战
android·javascript·python·教程·逆向·hook·逆向分析
啦啦啦!2 天前
ChatGPT和Gemini的接入和封装
人工智能·ios·chatgpt
yewq-cn2 天前
AOSP 下载
android
cch89182 天前
Laravel vs ThinkPHP:PHP框架终极对决
android·php·laravel
报错小能手2 天前
ios开发方向——swift并发进阶核心 async/await 详解
开发语言·ios·swift