Expo Local Authentication在Android设备上跳过面部认证问题求助
解决方案:Expo Local Authentication在Android上跳过面部识别的问题
可能原因
- Android系统默认优先使用指纹识别,面部识别的优先级未被设为最高
- 未在
authenticateAsync中明确指定允许的生物识别类型 - Expo版本或插件版本存在兼容性问题
- 设备面部识别注册不完整
具体解决步骤
调整系统生物识别优先级
进入Android设备的「设置」-「生物识别和密码」,将面部识别设置为默认的生物验证方式(部分设备需在「生物识别优先级」选项中调整)。明确指定允许的认证类型
在调用authenticateAsync时,通过allowedAuthenticationTypes参数显式包含面部识别类型,强制系统尝试面部认证:import * as LocalAuthentication from 'expo-local-authentication'; const authenticate = async () => { const result = await LocalAuthentication.authenticateAsync({ promptMessage: '请完成生物识别验证', allowedAuthenticationTypes: [ LocalAuthentication.AuthenticationType.FINGERPRINT, LocalAuthentication.AuthenticationType.FACE_ID ], }); console.log(result); };检查并补充Android权限配置
在app.config.js中确认已添加Android生物识别权限(Expo插件通常会自动添加,手动确认更稳妥):{ "expo": { "android": { "permissions": ["USE_BIOMETRIC"] }, "plugins": [ [ "expo-local-authentication", { "faceIDPermission": "Allow $(PRODUCT_NAME) to use Face ID." } ] ] } }验证面部识别注册状态
进入设备生物识别设置,删除已注册的面部信息后重新录入,确保面部识别功能在系统层面可正常使用。尝试升级Expo及插件版本
Expo 47属于较旧版本,部分Android生物识别适配问题在后续版本中已修复。可尝试升级到兼容的新版本(如Expo 49 + expo-local-authentication ~14.0.1),升级前请备份项目并确认依赖兼容性。
内容的提问来源于stack exchange,提问作者szk
相关产品推荐
相关产品推荐

