在 Google API 密钥和 Firebase 设置中设置哪些 RELEASE 证书签名/上传

问题描述

虽然有很多相关帖子,但我找不到我问题的确切答案。

在我们将应用程序投入生产之前,我将创建一个单独的 Firebase 项目,但现在我尝试使用单个 Firebase 项目,但为 DEBUG 和 RELEASE 使用单独的 Google Api 密钥。

对于 Android RELEASE 版本,每个 SHA-1 指纹(签名与上传)必须在哪里输入?

我将签名(来自 GooglePlay 控制台)和上传(来自带有 RELEASE 密钥库的 keytool)指纹放入:

  • google-services.json 在应用构建中
  • Firebase 项目设置
  • Google Api 密钥限制

我假设我需要两者,因为在 API 密钥限制中,因为无论 RELEASE 版本是直接上传到测试设备还是从 GooglePlay 商店下载,我都需要密钥才能工作。

我认为我不需要在 google-services.json 中签名 SHA-1,因为我认为 GooglePlay 会自动用自己的覆盖 SHA-1,但其他帖子提到需要在 Firebase 设置上签名 SHA-1 作为好吧,并在那里添加它更新了 Firebase 提供的 google-services.json 文件以供下载。

但是,在尝试匿名登录(在测试设备上使用 RELEASE 版本)时,RELEASE 版本会出现错误

"Requests from this Android client application {package.name} are blocked."

我输入指纹的顺序重要吗?我应该只放一个吗?之前我只有上传指纹,但是也没用。

从我尝试无济于事的相关帖子中得到的解决方案:

  • 在 Firebase 中删除并重新输入指纹

有效但不理想:

  • 删除 API 密钥中的证书限制并使 API 密钥不受限制

更新: 将 DEBUG 证书添加到发布 API 密钥限制(即使 RELEASE 模式下的 google-services.json 没有将其列为客户端)显然有效,我不明白为什么。

解决方法

显然,将 DEBUG 证书添加到 RELEASE API 密钥限制(即使 RELEASE 模式下的 google-services.json 没有列出它)是有效的。

似乎将 RELEASE 版本部署到通过 USB 连接的设备上仍会无意中使用 DEBUG 证书进行签名。