【问题标题】:Should I add the google-services.json (from Firebase) to my repository?我应该将 google-services.json(来自 Firebase)添加到我的存储库吗?
【发布时间】:2016-09-18 09:45:42
【问题描述】:

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

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

【问题讨论】:

    标签: git version-control firebase


    【解决方案1】:

    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?”中提到的,这并不是那么简单。

    baueric 询问the comments

    在那篇文章中他说:

    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 控制台中的使用方式。

    【讨论】:

    • 这实际上是不正确的;一位 Firebase 工程师说,检查源代码控制是 okay。 @Yaron 的回答是正确的。
    • @WillieChalmersIII 好的。我已经相应地修改了答案。
    • @WillieChalmersIII 在那篇文章中,他说“JSON 文件不包含任何超级敏感信息(如服务器 API 密钥)”,但 google-services.json 确实有名为 api_key 的条目。那是与“服务器 api 密钥”不同的 api 密钥吗?
    • @baueric 请参阅this 回答以获取更多信息。是的,该 API 密钥不是永远不应该公开的服务器 API 密钥,所以如果您的 google-services.json 对其他人可见,那很好。无论如何,您仍应限制您的客户端 API 密钥在 Google Cloud 控制台中的使用方式。
    【解决方案2】:

    this 讨论看来,您可以将其添加到公共回购中。无论如何,它的内容最终都在 APK 中,并且可能很容易提取。

    【讨论】:

    • 我同意,我现在正在处理这个问题。有没有办法从反编译 APK 的人那里加密该文件中的密钥?
    • 虽然 API 密钥确实可以很容易地从 apk 中提取出来,但问题是 google-services.json 是否应该在 公共开源 repo 中进行源代码控制。在绝大多数情况下,答案肯定是 NO - 除非 repo 所有者希望全世界默认使用他们的 Google 帐户 API 配额。 @VonC 的答案是正确的。
    • hitraj47 询问是否将其添加到 public 存储库。该讨论没有提到公共存储库,他们似乎在讨论私有存储库。
    • 请注意,可以使用签名和签名对密钥进行保护。因此,其他人看到密钥没有问题,因为没有您的签名密钥他们无法使用它
    • 你能解释一下吗?如果我用另一个密钥保护这个密钥,最终我的应用程序需要第二个密钥才能使用第一个密钥。所以我最终遇到了同样的问题,即将该密钥保存在存储库中的何处。
    猜你喜欢
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多