【发布时间】:2016-09-18 09:45:42
【问题描述】:
我刚刚注册了 Firebase,并创建了一个新项目。 Firebase 询问我的应用程序域和 SHA1 调试密钥。我输入了这些详细信息,它生成了一个 google-services.json 文件供我添加到我的应用模块的根目录中。
我的问题是,是否应该将此 .json 文件添加到公共(开源)存储库中。是否应该保密,例如 API 密钥?
【问题讨论】:
标签: git version-control firebase
我刚刚注册了 Firebase,并创建了一个新项目。 Firebase 询问我的应用程序域和 SHA1 调试密钥。我输入了这些详细信息,它生成了一个 google-services.json 文件供我添加到我的应用模块的根目录中。
我的问题是,是否应该将此 .json 文件添加到公共(开源)存储库中。是否应该保密,例如 API 密钥?
【问题讨论】:
标签: git version-control firebase
google-services.json 文件是 from the Firebase doc:
Firebase 通过一个配置文件管理您的所有 API 设置和凭据。
该文件在 Android 上命名为google-services.json,在 iOS 上命名为GoogleService-Info.plist。
将其添加到.gitignore 并且不将其包含在公共回购中似乎是有意义的。
这在issue 26 中进行了讨论,并详细介绍了google-services.json 包含的内容。
像googlesamples/google-services 这样的项目确实有它in its .gitignore。
虽然,作为commented by stepheaw,这个thread does mention
对于库或开源示例,我们不包含 JSON 文件,因为其目的是用户插入自己的代码以将代码指向自己的后端。
这就是为什么我们在 GitHub 上的大多数 Firebase 存储库中都看不到 JSON 文件的原因。
如果“数据库 URL、Android API 密钥和存储桶”对您来说不是秘密,那么您可以考虑将文件添加到您的存储库中。
正如“Is google-services.json safe from hackers?”中提到的,这并不是那么简单。
在那篇文章中他说:
JSON 文件不包含任何超级敏感信息(如服务器 API 密钥)
但
google-services.json确实有名为api_key的条目。
这与“server api key”是否是不同的 api 密钥?
Willie Chalmers III 指向“Is google-services.json safe from hackers?”,并添加:
是的,该 API 密钥不是永远不应该公开的服务器 API 密钥,因此如果您的
google-services.json对其他人可见,那很好。无论如何,您仍应限制您的客户端 API 密钥在 Google Cloud 控制台中的使用方式。
【讨论】:
google-services.json 确实有名为 api_key 的条目。那是与“服务器 api 密钥”不同的 api 密钥吗?
google-services.json 对其他人可见,那很好。无论如何,您仍应限制您的客户端 API 密钥在 Google Cloud 控制台中的使用方式。
从this 讨论看来,您可以将其添加到公共回购中。无论如何,它的内容最终都在 APK 中,并且可能很容易提取。
【讨论】:
google-services.json 是否应该在 公共开源 repo 中进行源代码控制。在绝大多数情况下,答案肯定是 NO - 除非 repo 所有者希望全世界默认使用他们的 Google 帐户 API 配额。 @VonC 的答案是正确的。