我应该将google-services.json(来自Firebase)添加到我的存储库中吗?


100

我刚刚注册了Firebase,然后创建了一个新项目。Firebase要求我提供我的应用程序域和SHA1调试密钥。我输入了这些详细信息,它生成了一个google-services.json文件供我添加到我的应用模块的根目录中。

我的问题是,是否应将此.json文件添加到公共(开源)存储库中。它应该是秘密的吗,例如API密钥?

Answers:


94

一个google-services.json文件,从火力地堡文档

Firebase通过一个配置文件管理所有API设置和凭据。
该文件google-services.json在Android和GoogleService-Info.plistiOS上命名。

将其添加到a.gitignore而不将其包含在公共仓库中似乎很有意义。
第26期中对此进行了讨论,其中google-services.json包含了更多详细信息。

像一个项目googlesamples/google-services确实有它在它.gitignore的实例。
虽然,作为评论stepheaw,这个线程做提

对于库或开放源代码示例,我们不包括JSON文件,因为其目的是用户插入自己的代码,以将代码指向自己的后端。
这就是为什么您在GitHub上大多数Firebase存储库中看不到JSON文件的原因。

如果“数据库URL,Android API密钥和存储桶”不是您的秘密,则可以考虑将文件添加到存储库中。
如“ google-services.json对黑客安全吗? ”中所述,这并不是那么简单。

baueric评论中询问:

他在那篇文章中说:

JSON文件不包含任何超敏感信息(例如服务器API密钥)

google-services.json确实有一个名为的条目api_key
这是与“ server api key”不同的api密钥吗?

威利查默斯三世(Willie Chalmers III)指出“ google-services.json对黑客安全吗? ”,并补充说:

是的,该API密钥不是永远不应该公开的服务器API密钥,因此如果您google-services.json的其他人可以看到您的密钥,那就很好。

无论如何,您仍应限制如何在Google Cloud控制台中使用客户端API密钥。


10
这实际上是不正确的。Firebase工程师表示可以检查源代码控制。@Yaron的答案不变。
威利·查默斯三世

2
@WillieChalmersIII好。我已经相应地修改了答案。
VonC

@WillieChalmersIII在那篇文章中,他说:“ JSON文件不包含任何超敏感信息(例如服务器API密钥)”,但是google-services.json确实有一个名为的条目api_key。那是与“服务器api密钥”不同的api密钥吗?
baueric

1
@baueric见更多信息的答案。是的,该API密钥不是永远不应该公开的服务器API密钥,因此如果您google-services.json的其他人可以看到您的密钥,那就很好。无论如何,您仍应限制如何在Google Cloud控制台中使用客户端API密钥。
威利查默斯三世

36

通过讨论,您似乎可以将其添加到公共仓库中。无论如何,其内容最终都将保存在APK中,并且可能很容易提取。


1
我同意,并且我现在正在处理此问题。有没有办法通过反编译APK来加密该文件中的密钥?
stepheaw

13
虽然可以很容易地从apk提取API密钥是绝对正确的,但问题是,是否google-services.json应该在公共开源回购中使用源代码控制。在绝大多数情况下,答案肯定是“不” -除非回购所有者希望默认情况下整个世界都使用其Google帐户API配额。@VonC的答案不变。
friederbluemle 17-10-29

2
hitraj47询问有关将其添加到公共存储库中的问题。该讨论没有提到公共存储库,而是在讨论私有存储库。
尤金(Eugene)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.