You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一包名与SHA-1的OAuth2客户端已存其他项目,如何解决Firebase配置冲突?

报错信息

An OAuth2 client already exists for this package name and SHA-1 certificate in another project
中文翻译:该包名和SHA-1证书对应的OAuth2客户端已在另一个项目中存在。

问题核心原因

同一个包名+SHA1签名的组合,只能绑定到一个Google Cloud Platform(GCP)项目下的OAuth 2.0客户端。你旧的生产环境Firebase项目关联的GCP项目已经占用了该组合,因此新的Firebase项目无法重复添加对应SHA1。

可行解决方案
  • 方案1:低峰时段迁移SHA1指纹
    操作步骤:

    1. 登录旧Firebase项目控制台,进入「项目设置」-「通用」页面,找到绑定了对应冲突SHA1的Android应用配置
    2. 删除该条SHA1指纹记录
    3. 立刻进入新Firebase项目的Android应用配置页,添加相同的SHA1指纹
      说明:该操作的配置生效间隔通常在1分钟以内,已登录的存量用户不受影响,仅新发起登录请求的用户可能有极短时间的登录异常,选择业务低峰期操作几乎无感知。配置完成后重新下载新的google-services.json替换Flutter项目内的对应文件,重新打包即可。
  • 方案2:复用旧项目的OAuth客户端ID,无侵入修改
    操作步骤:

    1. 打开旧Firebase项目关联的GCP控制台,进入「API和服务」-「凭据」页面,找到对应包名+SHA1的Android类型OAuth 2.0客户端ID,复制该ID值
    2. 打开新Firebase项目的Authentication模块,进入「登录方式」-「Google」提供商的设置页面,找到自定义客户端ID配置项,将上一步复制的Android客户端ID填入并保存
    3. 在Flutter项目的Google登录初始化逻辑中,手动指定该客户端ID,不要使用Firebase默认读取的配置值
      说明:该方案完全不需要修改旧项目的任何配置,不会影响线上生产环境的运行,也无需调整包名或签名,是风险最低的处理方式。
注意事项
  • 无论采用哪种方案,修改配置后都需要重新打包应用,确保配置文件或硬编码的客户端ID生效
  • 不要直接删除旧GCP项目的OAuth客户端凭据,仅删除Firebase侧的SHA1记录不会影响原有凭据的有效性

内容的提问来源于stack exchange,提问作者Pierre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:15:01