@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
相关产品推荐
相关产品推荐

