4

我想在 Gatsby 项目中使用 Firebase App Check。我已经在 Firebase 控制台中完成了 App 注册。

在此处输入图像描述

在我的项目中:

import { initializeApp } from "firebase/app";
import { initializeAppCheck, ReCaptchaV3Provider, getToken } from "firebase/app-check";

const app = initializeApp({
  // My firebase configuration object
});

const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaV3Provider('MY_RECAPTCHA_PUBLIC_KEY'),
  isTokenAutoRefreshEnabled: true
});

getToken(appCheck)
  .then(() => {
    console.log('success')
  })
  .catch((error) => {
    console.log(error.message)
  })

但是,它不起作用并出现错误:

@firebase/app-check: FirebaseError: AppCheck: Fetch server 返回一个 HTTP 错误状态。HTTP 状态:403。(appCheck/fetch-status-error)。

那么,谁能帮我检查一下问题出在哪里?怎么解决?

谢谢!

4

3 回答 3

2

在 Google Cloud Console 中转到您的 Firebase 项目: https ://console.cloud.google.com/apis/credentials

在“API 密钥”下单击您的 Firebase API 密钥的名称。

“API 限制”

如果您限制使用 API 密钥,请确保包括:

选定的 API:Firebase 应用检查 API

于 2021-10-12T21:11:02.210 回答
0

我有一个类似的问题。对我来说,当我在 firebase 配置中使用正确的 appId 时,错误得到了解决。事实证明,我在 firebase 上设置了两个应用程序,并且下载了错误的 json 文件,该文件具有不同的 appId。

根据 Firebase 支持,每个应用的 appId 都是唯一的。

于 2022-01-03T22:02:04.433 回答
0

添加到@jprio的答案:

如果您使用不受限制的API 密钥并使用 ReCaptchaEnterprise,则必须确保为您的 Recaptcha Enterprise Site Key 正确设置了适当的域。

  1. 在 Google Cloud 控制台中,转到 Security,然后是 reCAPTCHA Enterprise: https ://console.cloud.google.com/security/recaptcha
  2. 单击三个点,然后在生成的密钥上按“编辑密钥” 编辑企业站点密钥
  3. Domain List下,输入您网站的域,无需添加任何 HTTP/HTTPS/WWW 前缀或端口号。
  4. 如果是本地开发,一定要加上localhost/127.0.0.1。这就是为我解决问题的原因。保存更改。在部署到您的网站之前不要忘记删除这些 在此处输入图像描述
  5. 大约 5 分钟后在您的客户端上点击刷新,以便传播更改。如果您使用 ReCaptcha Enterprise,请确保您在客户端中使用 ReCaptchaEnterpriseProvider。
于 2021-12-29T04:03:37.077 回答