测试发布版SHA-1授权时出现Game Services OAuth2.0错误
我碰到过好几个开发者遇到和你一模一样的问题,大部分都是SHA-1配置或者签名相关的细节没处理好,给你列几个排查方向,按顺序试试应该能解决:
确认发布版SHA-1的绝对准确性
90%的这类问题都出在这里——你在开发者控制台填的SHA-1,是不是发布签名密钥的?很多人会不小心把调试密钥的SHA-1重复填进去。验证方法很简单,用命令行生成发布密钥的SHA-1:keytool -list -v -keystore 你的发布密钥库路径.jks -alias 你的密钥别名把输出里的SHA-1值(注意是SHA1,不是SHA256)复制出来,和Google Play开发者控制台、Firebase控制台里的配置逐一比对,确保没有空格、大小写错误或者字符遗漏。
同步Firebase与Google Play游戏服务的SHA-1配置
因为你的应用用了Firebase,两个平台的SHA-1必须完全同步。打开Firebase控制台,进入项目设置→应用,找到你的Android应用,把发布版的SHA-1添加进去,然后重新下载google-services.json文件替换项目里的旧文件,接着clean项目再重新构建发布版APK。检查OAuth客户端ID与游戏服务的关联
进入Google Play开发者控制台的游戏服务页面,找到你的游戏,点击「链接的应用」,确认Android应用下同时存在调试和发布两个客户端ID,并且每个ID对应的SHA-1都正确。另外,如果你的游戏还没正式发布,记得把测试用的Google账号添加到「测试账号」列表里——未发布的游戏只有添加过的测试账号才能正常登录。抓取详细错误日志定位问题
你说找不到错误代码,其实可以通过Logcat抓取发布版的日志信息:- 把测试设备连接到电脑,打开Android Studio的Logcat
- 过滤关键词
GooglePlayServices、Auth或者SignIn - 触发登录流程,查看是否有更具体的错误提示(比如
SIGN_IN_FAILED的子类错误,或者OAuth授权失败的原因)
要是Studio的Logcat不够清晰,试试用命令行:
adb logcat -s GooglePlayServices这个命令会只输出Google Play服务相关的日志,更容易找到关键错误信息。
检查Google Play App Signing的影响
如果你开启了Google Play的应用签名服务,那你本地的发布密钥SHA-1其实没用——Google会替换成它自己的签名密钥。这时候你需要去Google Play控制台→应用→应用签名页面,复制「应用签名证书」或者「上传证书」的SHA-1值,把这个值添加到Google Play游戏服务和Firebase的配置里,而不是你本地的密钥SHA-1。清除缓存后重新测试
有时候本地缓存会干扰认证流程,测试前先做这些操作:- 卸载设备上的发布版应用
- 进入设备设置→应用→Google Play服务→存储→清除缓存
- 重新安装发布版APK,再尝试登录
内容的提问来源于stack exchange,提问作者RhysBailey21

