FirebaseError:AppCheck:获取服务器返回 HTTP 错误状态。 HTTP 状态:403。(appCheck/fetch-status-error)

问题描述 投票:0回答:2

我尝试在开发过程中同时使用 Firebase Appcheck 和模拟器。我认为 Appcheck 在部署完成后可以工作,但部署后也不起作用。但是,当调试控制台尝试将文件上传到存储时,它会返回以下错误。

FirebaseError: AppCheck: Fetch server returned an HTTP error status. HTTP status: 403. (appCheck/fetch-status-error).

  1. Firebase 存储的 Appcheck :从 Firebase 控制台强制执行 - Appcheck

  2. 存储规则如下:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth!=null;
    }
  }
}
  1. 相关初始化代码
    at the top of index.html body
    如下:
   <script>self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
  initializeAppCheck(app , {
    provider: ReCaptchaV3Provider("My Recaptha V3 Site Key"),
    isTokenAutoRefreshEnabled: true,
  });
  </script>
  1. AppCheck激活
    main.dart
    中的代码如下:
await FirebaseAppCheck.instance.activate(
      webRecaptchaSiteKey: 'My Recaptha V3 Site Key',
    );
  1. 我在调试模式激活时激活 AuthEmulator 和 StorageEmulator。
await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
await FirebaseStorage.instance.useStorageEmulator('localhost', 9199);

如何消除错误?

firebase flutter recaptcha firebase-app-check
2个回答
0
投票

这篇文章可能有点太晚了。对于其他遇到此问题的人: 我在 flutter 中遇到了同样的错误。该问题与更新本地测试的调试令牌有关。生成令牌后,我建议将其另存为 HTML 文件中的字符串。而不是将标志设置为 true。


0
投票

我找不到使调试令牌与本地主机模拟器一起使用的方法,因此我只是从服务器端绕过了函数上的 appCheck。

我的代码如下所示,我添加了 NODE_ENV 检查

...
if (process.env.NODE_ENV !== 'production') return true;

try {
    await getAppCheck().verifyToken(appCheckToken);

    return true;
  }
...

NODE_ENV 在 Firebase 函数上暂时自动设置为“生产”。

© www.soinside.com 2019 - 2024. All rights reserved.