我正在开发一个基于ionic的移动的项目,并使用Firebase进行身份验证、数据库、存储等。几天前,我通过为iOS/Android/Web API键设置HTTP引用,对Google Cloud Console上的Firebase API键进行了限制。问题是-iOS和Android版本都存在Firebase API调用问题(Web应用程序仍然正常工作),引发了以下错误:
[来自引用方的请求被阻止。]”!!smsLogin ERROR“Error Domain=FIRAuthErrorDomain Code=17999“发生内部错误,请打印并检查错误详细信息以了解详细信息。”UserInfo={FIRAuthErrorUserInfoNameKey=ERROR_INTERNAL_ERROR,NSLocalizedDescription=发生内部错误,请打印并检查错误详细信息以了解详细信息。,NS底层错误= 0x 282938 ff 0 {错误域=初始验证内部错误域代码=3“(空)”用户信息={初始验证错误用户信息反序列化响应密钥={\n代码= 403;\n详细信息=(\n {\n“@类型”=“type.googleapis.com/google.rpc.ErrorInfo“;\n域名=“googleapis.com”;\n元数据= {\n使用者=“项目/770668602613”;\identitytoolkit.googleapis.comn原因=“API密钥HTTP引用被阻止”;\n }\n);\n错误=(\n {\n域=全局;\n message =“来自引用方的请求被阻止。";\n原因=禁止;\n }\n);\n消息=“来自引用方的请求被阻止。";\n状态=“许可被拒绝”;\n}}}”
这里的引用<empty>
是什么意思?
2条答案
按热度按时间vmpqdwk31#
此错误消息表示发送到底层Firebase或任何其他Google Cloud API的HTTP请求中的HTTP“Referer”头字段完全缺失或具有空值。HTTP Referer头字段允许标识Web URL(第页)请求访问资源该标识使得能够使用HTTP引用来实现API密钥限制控制,如这里所描述的。
由于您在问题陈述中提到,只有iOS和Android构建版本在Firebase API调用方面存在问题,但Web应用程序仍正常工作,因此问题似乎是Android和iOS应用程序中未设置HTTP“Referer”Header(可选)字段。
对于使用浏览器的Web应用程序,HTTP“Referer”字段是由浏览器自动设置的,这就是为什么Web应用程序一开始没有出现这个问题。类似的问题在另一个StackOverflow question上得到了很好的回答和描述。
vhipe2zx2#
如果您正在使用
signInFlow: "popup"
或在其自己的浏览器窗口中弹出firebase身份验证窗口-并且您尚未使用firebase托管设置自定义域,则需要在网站限制下添加您的firebase URL,例如:https://<your-app-12345>.firebaseapp.com/
.这是因为浏览器从弹出窗口设置引用头,其中域是您的firebase URL,而不是您的实际网站URL。