集成Firebase后Google登录报错12500及SHA1密钥问题求助
解决Google登录ApiException:12500及SHA1冲突问题
一、先确认你使用的SHA1密钥来源
你生成SHA1总是得到同一个值,是因为一直用的是同一个签名文件:
- Debug环境:默认使用Android Studio自带的debug keystore,路径为
~/.android/debug.keystore(Windows系统是C:\Users\<你的用户名>\.android\debug.keystore),这个文件的SHA1固定不变,除非你替换或删除它。 - Release环境:你用的是自己创建的keystore文件,签名文件不变的话,生成的SHA1自然一致。
提取对应环境的SHA1:
- 提取debug SHA1,在终端运行:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 提取release SHA1,替换为你的keystore信息后运行:
keytool -list -v -keystore <你的keystore路径> -alias <你的别名>
二、解决包名+指纹已被占用的问题
提示"The request failed because the Android package name and fingerprint are already in use",说明你的应用包名+当前SHA1已经绑定到另一个Google Cloud/Firebase项目,处理方式:
- 找到已绑定的项目:登录Google Cloud Console或Firebase控制台,通过搜索包名定位到关联的项目。
- 处理关联关系:
- 若该项目已废弃,直接删除项目下的对应应用关联;
- 若项目仍在使用,将当前项目的SHA1添加到该项目的OAuth 2.0客户端ID配置中(Google Console → API和服务 → 凭据 → 找到对应Android客户端ID → 编辑 → 添加SHA1指纹),实现同一包名+SHA1在多项目中复用。
三、统一Google Console与Firebase的SHA1密钥
- 登录Firebase控制台,进入项目设置 → 应用 → 找到你的Android应用,添加/替换为你确认的正确SHA1。
- 登录Google Console,进入对应项目 → API和服务 → 凭据 → 找到Android类型的OAuth客户端ID,确保SHA1与Firebase完全一致;若无对应客户端ID,直接创建,包名和SHA1与Firebase保持一致。
- 下载最新的
google-services.json文件,替换项目中旧文件,重新编译运行。
四、额外检查项
- 确认测试设备上的Google账号状态正常,无限制;
- 检查模块级
build.gradle中的applicationId与Google Console/Firebase中的包名完全匹配; - 若使用Flutter,确保
google-services.json放在android/app目录下,且build.gradle已正确配置Google服务插件。
内容的提问来源于stack exchange,提问作者Taki Rajani
相关产品推荐
相关产品推荐

