尝试匿名登录 Firebase 时,推荐人请求会被阻止

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

我正在尝试使用 JS SDK 从 Web 应用程序匿名登录,它在某些环境中运行良好,但在一个环境中,在其他地方运行的完全相同的代码给了我一个 403:

(索引):64 {“错误”:{“代码”:403,“消息”:“来自引用者https://myapp.firebaseapp.com/的请求被阻止。”,“错误”:[{“ message”:“来自引用者https://myapp.firebaseapp.com/的请求被阻止。“,”domain”:“global”,“reason”:“forbidden”}],“status”:“PERMISSION_DENIED”} }

但我认为我检查了所有环境中的所有内容都是相同的:启用了匿名身份验证,并且我的 Web 应用程序位于 Firebase 托管上,因此代码应该与环境无关。

知道这可能来自哪里吗?

javascript firebase firebase-authentication
7个回答
34
投票

您似乎对 API 密钥设置了一些引用限制。您需要前往 Google Cloud Console 并修改 API 密钥上的这些限制。


18
投票

这对我有帮助:

console cloud google -> API 和服务 -> 凭据 -> 单击:浏览器密钥(由 firebase 自动创建) -> 应用程序限制:无 & API限制:不限制密钥。

现在您的 API 不会阻止任何请求。我希望这有效!


3
投票

转到您的 Firebase 控制台 - 身份验证。

找到您的授权域名并复制它们。

转到 Google Cloud Platform 并找到浏览器密钥(由 Firebase 自动创建)。

将之前复制的域添加到 HTTP 引荐来源网址。


0
投票

解决方案

我将谷歌云平台上的应用程序设置为“http引荐来源网址”,并尝试访问Firebase存储中的文件。当我未登录时,无法访问该文件。 我找到了这里,然后用谷歌搜索

referrer restrictions firebase storage

我的解决方案

我在官方文档中看到了 Firebase 存储的安全规则。我查了一下规则,是默认的

allow read, write: if request.auth != null;
。我把它改成了
allow write: if request.auth != null;  allow read: if true;

然后一切正常。


0
投票

我能够通过创建一个新的受限密钥(受网站限制,仅限于我的应用程序的域)来解决此问题。

  1. 转到您的项目Google Cloud 中的 API 凭证

  2. 单击“创建凭据”,然后选择“API 密钥”。

    API Credentials in Google Cloud

  3. 将您的 API 密钥限制在您的域中。 请参阅 Google 关于限制 API 密钥的指南。例如,要允许站点中的任何 URL,您必须在 allowedReferers 列表中设置两个 URL:

    • 域的 URL,不带子域,并带有路径通配符。例如:

      example.com/*

    • 第二个 URL,其中包含子域的通配符和路径的通配符。例如:

      *.example.com/*

    • 您可能需要将 Firebase 身份验证设置中列出的授权域复制到 API 限制域, 例如:

      myproject-3243.firebaseapp.com/*

    • 确保您的 Firebase 域名身份验证设置与 API 密钥受限域中的域名一致,但请注意,通配符 (*) 表示法仅适用于 API 密钥设置。

      enter image description here

  4. 等待 5 分钟以使更改生效,然后在您的应用程序中使用新的 API 密钥。


0
投票

就我而言,我做了所有事情,但 1 小时都没有效果。 因此,如果您没有更改名称,我会删除对 API 密钥(即浏览器密钥(由 Firebase 自动创建))的限制。 在我的网站上测试一下这个功能,可以用。 再次应用限制。 可能只是 Google 方面的一些内部错误没有应用更改。


-2
投票

为了使其正常工作,我为“浏览器密钥”添加了以下“网站限制”:

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