为什么:appengine 到 firebase 身份验证失败,错误引用被禁止

Why: appengine to firebase Authentication fails with error referer forbidden

我有一个部署在 google 云应用程序引擎上的 Web 应用程序项目。

gcloud app deploy

应用引擎基本上只是一个提供静态文件的网络服务器。但是我不得不使用 appengine 为 SEO 预渲染网站。

在 webapp 中,我使用了 firebase 身份验证 API。 https://www.gstatic.com/firebasejs/7.8.0/firebase-auth.js

在 firebase 控制台中,我激活了匿名身份验证。 preview of firebase auth providers

当我在应用引擎上部署我的静态内容的新版本时,我创建了一个名为 "stag" 的新版本,只是为了在部署到生产环境之前预览和测试所有内容。然后我可以预览我在特定版本 url 上的工作,就像这样:

https://stag-dot-frb-proj1.appspot.com/

frb-proj1: 是我的 firebase 项目 ID。

当我在 url 上预览我的作品时:https://stag-dot-frb-proj1.appspot.com/ 我收到以下错误:

{
  "error": {
    "code": 403,
    "message": "Requests from referer https://stag-dot-frb-proj1.appspot.com/ are blocked.",
    "errors": [
      {
        "message": "Requests from referer https://stag-dot-frb-proj1.appspot.com/ are blocked.",
        "domain": "global",
        "reason": "forbidden"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}

我在网络选项卡上的 chrome 开发工具中发现了错误。当应用程序尝试访问以下内容时会发生这种情况 url:

https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIza....CcpT0

我假设此 api 调用是为了在 firebase 身份验证 api 上创建一个新的匿名用户 api。

所有使用的域都按预期在 firebase 控制台中获得授权。

授权域

尝试过的解决方案

我试着按照这个例子https://cloud.google.com/appengine/docs/standard/python/authenticating-users-firebase-appengine

并在我的 app.yaml 中为 appengine

设置环境变量 FIREBASE_PROJECT_ID

问题

知道哪里出了问题吗?

考虑到这个错误,这个问题似乎与你的 API 密钥有关。根据这些其他类似情况 - 您可以在下面的链接中访问 - 似乎配置的 API 密钥没有所有需要的权限。

我建议您查看以下案例,并尝试使用那里提供的解决方案 - 他们都表示它解决了他们的问题。

如果这些信息对您有帮助,请告诉我!