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

Expo项目Local Authentication Face ID无法使用问题求助

Expo中Face ID无法正常触发的解决方法

1. 确保配置真正生效

你的app.json配置格式正确,但修改infoPlist后需要让配置生效:

  • 若使用托管式Expo项目:重启Expo开发服务器,或执行expo prebuild --clean(已预构建过的情况)后重新运行项目。
  • 若使用裸项目:执行npx pod-install更新iOS依赖,再重新构建运行项目。

2. 修复useEffect逻辑问题

你的useEffect存在两处问题:无依赖数组导致重复执行、异步setState后立即判断值未更新。修改如下:

useEffect(() => {
  const checkBiometricAndAuthenticate = async () => {
    const compatible = await LocalAuthentication.hasHardwareAsync();
    setIsBiometricSupported(compatible);
    // 直接基于返回值判断,无需等待state更新
    if (compatible) {
      onAuthenticate();
    }
  };

  checkBiometricAndAuthenticate();
}, []); // 空依赖数组确保仅执行一次

3. 明确请求生物识别权限

提前主动请求权限,避免系统因权限问题取消验证:

async function onAuthenticate() {
  const permission = await LocalAuthentication.requestPermissionsAsync();
  if (permission.granted) {
    const result = await LocalAuthentication.authenticateAsync({
      promptMessage: "Authenticate with Face ID", // 提示文字匹配Face ID更合理
      fallbackLabel: "Enter Password",
    });
    setIsAuthenticated(result.success);
    console.log(result);
  } else {
    console.log("生物识别权限已拒绝");
  }
}

4. 检查设备系统设置

  • 确认设备已开启Face ID(设置 > Face ID与密码)。
  • 检查当前App是否被授权使用Face ID(设置 > 你的App名称 > Face ID)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:27:05