You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native Android端实现人脸与指纹双认证?

React Native Android端实现人脸与指纹双认证方案

问题根源

你使用的react-native-touch-id库在Android端底层依赖FingerprintManager API,该API仅支持指纹认证,无法调用系统的人脸认证能力。要同时支持人脸和指纹,需要切换到基于Android官方BiometricPrompt API的库——这是Google推出的统一生物认证接口,支持指纹、人脸等多种生物识别方式。

解决方案:使用react-native-biometrics库

1. 替换依赖库

先卸载旧库并安装新库:

npm uninstall react-native-touch-id
npm install react-native-biometrics --save
# 或使用yarn
yarn remove react-native-touch-id
yarn add react-native-biometrics

2. 配置Android权限

在android/app/src/main/AndroidManifest.xml中添加生物认证权限:

<!-- Android 10+ 所需权限 -->
<uses-permission android:name="android.permission.BIOMETRIC_AUTHENTICATE" />
<!-- 兼容Android 9及以下版本 -->
<uses-permission android:name="android.permission.USE_BIOMETRIC" />

3. 检测设备支持的生物认证类型

先判断设备是否支持人脸、指纹或两者都支持:

import ReactNativeBiometrics from 'react-native-biometrics';

const checkBiometricSupport = async () => {
  const { available, biometryType } = await ReactNativeBiometrics.isSensorAvailable();
  
  if (!available) {
    console.log("设备无可用生物认证方式");
    return;
  }

  switch(biometryType) {
    case ReactNativeBiometrics.BiometryTypes.TouchID:
      console.log("仅支持指纹认证");
      break;
    case ReactNativeBiometrics.BiometryTypes.FaceID:
      console.log("仅支持人脸认证");
      break;
    case ReactNativeBiometrics.BiometryTypes.Biometrics:
      console.log("同时支持指纹与人脸认证");
      break;
  }
};

4. 发起生物认证调用

调用统一认证接口,Android系统会自动根据设备已注册的生物信息弹出对应认证界面(若同时支持人脸和指纹,系统会让用户选择或使用默认优先级):

const performBiometricAuth = async () => {
  try {
    const { success, error } = await ReactNativeBiometrics.simplePrompt({
      promptMessage: "请完成生物认证",
      cancelButtonText: "取消"
    });

    if (success) {
      console.log("认证成功");
      // 处理认证成功后的业务逻辑
    } else {
      console.log(`认证失败:${error}`);
      // 处理认证失败逻辑(如密码 fallback)
    }
  } catch (err) {
    console.log("认证出错:", err);
  }
};

关键说明

  • Android系统要求:人脸认证通常需要Android 10(API Level 29)及以上版本,部分厂商定制系统可能在更低版本支持,但BiometricPrompt从Android 9(API Level 28)开始提供统一接口。
  • 系统自动处理:当设备同时注册了人脸和指纹时,BiometricPrompt会自动展示包含两种选项的认证界面,无需开发者手动区分处理。
  • 兼容性:该库同时支持iOS端的FaceID和TouchID,可替代原react-native-touch-id实现跨平台统一生物认证。

内容的提问来源于stack exchange,提问作者Himanshu Prajapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:50:43