为什么我会看到此错误?
如果我们检测到其他 Firebase 或 Google Cloud 项目中存在使用指定软件包名称和 SHA-1 的 OAuth 2.0 客户端 ID,就会发送此错误消息。当您在 Firebase 控制台中向某个 Android 应用添加 Firebase 时,我们会为您的应用生成一个 Google OAuth 2.0 客户端 ID,用于向一些 Google API(如“应用邀请”或 Drive API)验证您应用的身份。出于安全方面的原因,用于创建 OAuth 2.0 客户端 ID 的每组软件包名称和 SHA-1 指纹在所有 Firebase 和 Google Cloud 项目中都必须是唯一的。
这会对我的应用产生什么影响?
目前有两项 Firebase 功能要求配置 Android 应用的软件包名称和 SHA-1:
- 邀请:如果不提供 SHA-1 就无法运行。目前无法使用来自其他项目的 SHA-1。
- 身份验证:要使用 Google 作为身份验证提供商,您必须在登录配置中手动将来自现有项目的客户端 ID 加入白名单。
我该怎么做?
如果您未使用 Firebase 邀请,也没有将 Google 作为 Firebase 身份验证的登录提供商,则您无需采取任何操作。如果您在使用其中一项功能,请参阅下面与您的情况最相符的场景说明:
我知道哪个 Google Cloud 项目中存在冲突 OAuth 2.0 客户端 ID,我不介意删除我的 Firebase 项目,或者我必须使用邀请功能。如果是刚刚创建此项目或者刚开始在应用中添加 Firebase,最简单的方法是删除您的项目,然后导入现有的 Google 项目。具体步骤如下:
- 删除您的 Firebase 项目。此操作是永久性的,会删除与项目关联的所有数据。
- 访问 Firebase 控制台。
- 点击导入 Google 项目。
- 选择存在相应 OAuth 2.0 客户端 ID 的现有项目,然后点击添加 Firebase。
如果无法导入现有项目且不打算使用邀请功能,您可以手动将已存在的 OAuth 2.0 客户端 ID 加入白名单以使用 Google 作为登录提供商。
首先,找到现有项目的 OAuth 2.0 客户端 ID,具体步骤如下:
- 在 Google 云端控制台中转至“凭据”页面。如果包含 OAuth 2.0 客户端 ID 的项目没有自动打开,请从页面右上角的下拉菜单将其选中。
- 在 OAuth 2.0 客户端 ID 部分中,找到包含您在 Firebase 项目中使用的 SHA-1 和软件包名称的客户端名称。如果不确定是哪个,请点击客户端名称以查看详情。
- 找到正确的客户端名称后,复制“客户端 ID”列中的完整值。
接着,将此客户端 ID 列入白名单以将 Google 作为登录提供商。具体步骤如下:
- 转至 Firebase 控制台并选择您的项目。
- 从左侧菜单中选择身份验证。
- 选择登录方法标签。
- 在登录方法页面上,点击登录提供商卡片中的 Google。
- 展开在白名单中添加来自外部项目的客户端 ID 选项。
- 将云端控制台里的客户端 ID 粘贴到文本字段中,然后点击添加。
如果您不知道哪个项目存在冲突的 OAuth 2.0 客户端 ID,请执行以下操作,看看能否找到它:
- 在 Google 云端控制台中转至“凭据”页面。
- 在 OAuth 2.0 客户端 ID 部分中,点击客户端名称以查看用于创建客户端 ID 的 SHA-1 和软件包名称。重复此操作,直到您找到正确的客户端名称或检查了所有客户端为止。
如果找不到包含匹配的 SHA-1 和软件包名称的客户端名称,请从页面右上角的下拉菜单另外选择一个项目,然后重复上述步骤。
在某些情况下,OAuth 2.0 客户端可能是在不属于您的项目中。如果无法找到冲突项目,请联系 Firebase 支持团队并向他们提供存在冲突的软件包名称和 SHA-1 指纹。