UTS 面容、指纹识别插件(uts-auth-login)

340 阅读8分钟

面容、指纹识别插件(uts-auth-login)

介绍

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

使用

该插件支持鸿蒙、安卓、iOS系统设备;
鸿蒙设备测试面容、指纹适配正常;
受UTS插件适配以及华为SDK影响,最低支持安卓9.0,部分国内安卓厂商禁止使用人脸认证,只能调起指纹识别
iOS最低支持11.0,设备会先进行面容识别(iOS从iphonex开始有的面容识别,之前版本支持指纹识别),认证失败两次会进行密码认证,继续失败手机会锁住,锁屏时间会累加

插件试用

APK下载

vue代码调用示例

<template>
	<view>
		<page-head :title="title"></page-head>
		<scroll-view>
			<view>
				<view class="uni-padding-wrap uni-common-mt">
					<button @tap="testAuthLogin">人脸登录</button>
				</view>
				<view class="uni-padding-wrap uni-common-mt">
					<button @tap="testGetEnrolledType">获取支持认证类型</button>
				</view>
				<view class="uni-padding-wrap uni-common-mt">
					<button @tap="testDebug">调试日志开关</button>
				</view>
			</view>	
		</scroll-view>	
		
	</view>
</template>

<script>
	
	import { enableDebug,getEnrolledType,authLogin } from "@/uni_modules/cz-authlogin";


	export default {
		data() {
			return {
				title:"AuthLogin 示例"
			}
		},
		methods: {
			testAuthLogin(){
				authLogin({
					param: {
						fingerTitle :"指纹识别",
						fingerSubTitle: "请触摸指纹传感器",
						fingerContent :"请进行指纹识别",
						passwordHint :"请输入您的密码进行认证",
						isReuseUnlock:false
					},
					success: (response)=>{
						console.log(""+response);
						this.showToast(""+response);
					},
					fail:(response)=>{
						console.log(response.errCode+ ", "+response.errMsg);
						this.showToast(response.errCode+ ", "+response.errMsg);
					}
				});
			},
			testGetEnrolledType(){
				uni.showToast({
					icon:'none',
					title:'是否支持面容指纹识别:'+getEnrolledType()
				})
			},
			testDebug(){
				enableDebug(false);
			},
			showToast(msg){
				if(msg == ''){
					uni.showToast({
						icon:'none',
						title:'未获取到相关信息'
					})
				}else {
					uni.showToast({
						icon:'none',
						title: msg
					})
				}
			}
		}
	}
</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

	NSFaceIDUsageDescription

鸿蒙Next

	ohos.permission.ACCESS_BIOMETRIC

API调用说明

API描述参数必须
authLogin()开始识别fingerTitle 安卓指纹识别标题,
fingerSubTitle 安卓指纹识别副标题,
fingerContent 安卓指纹识别描述,
passwordHint iOS密码认证的提示文本;
isReuseUnlock 是否启用鸿蒙复用解锁;
success:成功回调,失败可能会回调多次;
fail:错误回调
getEnrolledType()当前设备支持生物识别的类型1:指纹,2:面容,3:密码(鸿蒙Next),4:视觉(ios)
debug()设置调试日志输出开关enableLog true开 false关,默认关

错误码

错误码描述
9010501System does not support recognition
9010502System does not support biometric identification
9010503System has not recorded face
9010504System has not recorded fingerprint
9010505System has not recorded any information
9010506User canel

附录

鸿蒙Next错误码

错误码描述解决方法
12500001认证失败重新发起认证。
12500002一般的操作错误。系统服务内部工作异常,请稍后重新调用接口,或者重启设备尝试。
12500003认证被取消重新调用认证接口,发起认证。
12500004认证操作超时重新调用认证接口,发起认证。
12500005认证类型不支持请检查传入的认证类型参数,重新调用接口。
12500006认证信任等级不支持检查传入的authTrustLevel是否在合理范围,如果在合理范围,则是当前的设备不支持该认证信任等级。
12500007认证服务已经繁忙稍后重新发起认证。
12500009认证被锁定稍后重新发起一次成功的认证。
12500010该类型的凭据没有录入检查是否录入该类型的凭据,如果没有录入,则需要成功录入该类型凭据后再调用相关接口。
12500011提示/通知切换自定义认证重新调用认证接口,发起认证。
12500013密码过期用户前往设置更新系统锁屏密码,再次发起认证。
12700001人脸录入过程中的操作失败系统服务内部工作异常,请稍后重新调用接口,或者重启设备尝试。

鸿蒙错误码

错误码描述解决方法
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 进行身份验证失败。请稍后重试。