我正在尝试使用 JS SDK 从 Web 应用程序匿名登录,它在某些环境中运行良好,但在一个环境中,在其他地方运行的完全相同的代码给了我一个 403:
(索引):64 {“错误”:{“代码”:403,“消息”:“来自引用者https://myapp.firebaseapp.com/的请求被阻止。”,“错误”:[{“ message”:“来自引用者https://myapp.firebaseapp.com/的请求被阻止。“,”domain”:“global”,“reason”:“forbidden”}],“status”:“PERMISSION_DENIED”} }
但我认为我检查了所有环境中的所有内容都是相同的:启用了匿名身份验证,并且我的 Web 应用程序位于 Firebase 托管上,因此代码应该与环境无关。
知道这可能来自哪里吗?
您似乎对 API 密钥设置了一些引用限制。您需要前往 Google Cloud Console 并修改 API 密钥上的这些限制。
这对我有帮助:
console cloud google -> API 和服务 -> 凭据 -> 单击:浏览器密钥(由 firebase 自动创建) -> 应用程序限制:无 & API限制:不限制密钥。
现在您的 API 不会阻止任何请求。我希望这有效!
转到您的 Firebase 控制台 - 身份验证。
找到您的授权域名并复制它们。
转到 Google Cloud Platform 并找到浏览器密钥(由 Firebase 自动创建)。
将之前复制的域添加到 HTTP 引荐来源网址。
我将谷歌云平台上的应用程序设置为“http引荐来源网址”,并尝试访问Firebase存储中的文件。当我未登录时,无法访问该文件。 我找到了这里,然后用谷歌搜索
referrer restrictions firebase storage
。
我在官方文档中看到了 Firebase 存储的安全规则。我查了一下规则,是默认的
allow read, write: if request.auth != null;
。我把它改成了allow write: if request.auth != null; allow read: if true;
然后一切正常。
我能够通过创建一个新的受限密钥(受网站限制,仅限于我的应用程序的域)来解决此问题。
转到您的项目Google Cloud 中的 API 凭证
单击“创建凭据”,然后选择“API 密钥”。
将您的 API 密钥限制在您的域中。 请参阅 Google 关于限制 API 密钥的指南。例如,要允许站点中的任何 URL,您必须在 allowedReferers 列表中设置两个 URL:
等待 5 分钟以使更改生效,然后在您的应用程序中使用新的 API 密钥。
就我而言,我做了所有事情,但 1 小时都没有效果。 因此,如果您没有更改名称,我会删除对 API 密钥(即浏览器密钥(由 Firebase 自动创建))的限制。 在我的网站上测试一下这个功能,可以用。 再次应用限制。 可能只是 Google 方面的一些内部错误没有应用更改。
为了使其正常工作,我为“浏览器密钥”添加了以下“网站限制”: