2017-02-18 75 views
1

Firebase为我在Google API控制台上创建了一个API密钥。在那里,我添加了一个限制,使其仅适用于具有特定软件包名称和指纹的Android应用程序。Firebase:Google api密钥限制不起作用

但是我仍然可以使用不同包名的密钥(我改变了Gradle的应用程序ID)。什么可能是错的?

回答

0

Firebase不会基于主机应用程序的应用程序ID或签名哈希尝试限制实时数据库的使用。当您在控制台中创建一个新的Android应用程序,你会发现文本字段在以下文本签名密钥:

适用于动态链接,邀请,和谷歌的登录支持在 验证。在设置中编辑SHA-1。

这些是唯一受应用程序ID和签名散列影响的Firebase功能。应用程序ID需要的原因是帮助Gradle插件将google-services.json文件与其构建的应用程序相匹配。它的不是的安全措施。

如果更改的build.gradle您的应用程序ID,但不创建一个新的应用程序,并下载新的谷歌,services.json文件,你的构建失败了此消息:

不匹配的客户端找到包名“your.new.package.name”

+0

您可以更改build.gradle中的id,然后以相同的方式直接编辑google-service.json中的应用包名称。令我惊讶的是,即使Firebase控制台上不存在该虚假应用程序名称,也可以连接到后端。 – user3290180

+0

如果你这样做,那么你在你的项目中所做的每一个需要新的google-services.json的更改都需要你再次编辑它。然后再次。同时请记住,数据库安全规则的设计使您可以将其配置为全球可访问。再次,你下载的文件是*不是*安全措施。其中的值可以直接打入您的应用,任何人都可以对其进行逆向工程。如果您需要安全性,则还可以使用Firebase身份验证。 –