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

@react-native-firebase/app-check配置后始终出现Unverified无效请求问题排查

React Native Firebase App Check 未验证请求问题排查

以下是可能导致你遇到的"Unverified: Invalid requests"问题的遗漏步骤及解决方法:

1. Firebase控制台提供者配置未完成

Android (Play Integrity)

  • 进入Firebase控制台→你的项目→App Check→选择Android应用,点击「设置Play Integrity」
  • 按照提示关联对应的Google Cloud项目,确保已在Google Cloud控制台启用Play Integrity API
  • 在Firebase的Android应用设置中,添加应用的SHA-256指纹(包括debug和release环境的指纹,可通过./gradlew signingReport获取)
  • 若为开发环境,需在Firebase控制台生成调试令牌,并在AndroidManifest.xml中添加meta-data:
    <meta-data
      android:name="com.google.firebase.appcheck.playintegrity.debug_token"
      android:value="你的调试令牌"/>
    

iOS (App Attest + Device Check Fallback)

  • 进入Firebase控制台→你的项目→App Check→选择iOS应用,点击「设置App Attest」
  • 在Apple开发者后台,为应用启用App Attest服务,生成App Attest密钥并上传至Firebase
  • 若使用Device Check fallback,需同时启用Device Check服务,生成Device Check密钥并配置到Firebase
  • 在Info.plist中添加App Attest环境配置:
    <key>NSAppAttestEnvironment</key>
    <string>development</string> <!-- 生产环境改为production -->
    
  • 确保Entitlements文件中添加了对应权限:
    <key>com.apple.developer.devicecheck</key>
    <true/>
    <key>com.apple.developer.appattest-environment</key>
    <string>development</string>
    

2. 确保Firebase App先于App Check初始化

你的代码可能在Firebase App未完全初始化时就启动了App Check初始化,导致返回null。修改初始化逻辑,确保Firebase App就绪:

import { firebase } from '@react-native-firebase/app-check';
import app from '@react-native-firebase/app';

useEffect(() => {
  const initAppCheck = async () => {
    // 检查Firebase App是否已初始化
    if (!app.apps.length) {
      await app.initializeApp();
    }
    
    const appCheck = firebase.appCheck();
    const rnfbProvider = appCheck.newReactNativeFirebaseAppCheckProvider();
    
    rnfbProvider.configure({
      android: { provider: 'playIntegrity' },
      apple: { provider: 'appAttestWithDeviceCheckFallback' },
    });

    try {
      const result = await appCheck.initializeAppCheck({
        provider: rnfbProvider,
        isTokenAutoRefreshEnabled: true,
      });
      console.log('App Check初始化成功:', result);
    } catch (err) {
      console.error('App Check初始化失败:', err);
    }
  };

  initAppCheck();
}, []);

3. 验证App Check令牌有效性

手动获取令牌并在Firebase控制台验证,确认令牌是否合法:

// 在初始化成功后添加
const token = await firebase.appCheck().getToken(true); // true强制刷新令牌
console.log('App Check令牌:', token);

将打印出的token.token值,粘贴到Firebase控制台→App Check→「验证令牌」工具中,若验证失败,说明提供者配置存在问题。

4. 启用服务级别的App Check强制验证

即使App Check初始化成功,还需为每个Firebase服务启用强制验证:

  • 进入Firebase控制台→对应服务(如Firestore、Cloud Storage)→「规则」或「设置」页面
  • 开启「强制执行App Check」选项,或在规则中添加验证逻辑(如Firestore规则:allow read, write: if request.app != null;)

5. 检查依赖版本兼容性

确保@react-native-firebase/app与@react-native-firebase/app-check的版本完全一致,版本不兼容可能导致初始化异常或令牌生成失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:50:55