发布到PlayStore后,Google登录服务无法正常工作

4
我用我的.jks文件创建了我的SHA-1,然后使用我的包名和SHA-1代码创建了我的google-services.json。我将我的应用程序发布到Appstore后,我的登录服务完美地工作了。但一个小时后,所有服务都停止了。
我在每个平台上都使用相同的SHA-1,并且再次检查仍然相同。
Android Studio SHA-1输出

Anroid Studio

我的 Google Play-service.json SHA1 Servicejson

Play 商店 SHA-1,也许我需要使用应用签名证书? Play Store

出了什么问题?


googleservices.json 包含了正确的 API 密钥吗?你有确认过吗? - Mohammed Rampurawala
是的,我检查过了,没有问题。 - Berat Eyüboğlu
它在调试模式下可以工作,但在发布模式下不行,对吧? - Mohammed Rampurawala
不,我已经更改了构建变体并将我的apk安装到手机上,它完美地运行。但是在我更新我的apk到Play商店后,Google Play服务无法工作。 - Berat Eyüboğlu
3个回答

8
我解决了这个问题。首先我从Play商店下载了我的apk文件,然后解压并查看了SHA值,发现Play商店使用的是应用签名证书SHA值,而我在所有地方都使用了上传证书SHA值。
之后我将API SHA值更改为Play商店应用签名SHA值,问题得到完美解决。
参考链接:

2
如果您在发布应用程序时启用了“Google Play应用程序签名”,那么您现在可能正在处理两个指纹:
1. 来自本地密钥库的指纹(keytool -exportcert -keystore path-to-production-keystore -list -v),称为“上传证书”。 2. 启用签名后由Google生成的新指纹(“签名证书”)。
这种情况下的冲突是,您还有两个OAuth 2.0客户端ID:
1. 在发布应用程序之前创建的一个(以及在启用Google签名之前创建的)。 2. 启用Google签名时由Google创建的新客户端ID。
您可以从以下位置验证此事实: Google Play控制台->游戏服务->选择您的应用程序->API控制台项目->凭据->OAuth 2.0客户端ID
解决方案: 为了使Google登录(以及所有相关的游戏服务功能)正常工作,我必须更正我先前存在的OAuth2客户端ID的指纹(在发布我的应用程序之前创建的那个)。
1. 查找“正确”的OAuth 2.0客户端ID: Google Play控制台->游戏服务->选择您的应用程序->链接的应用程序->选择您的应用程序->记下底部的“OAuth2客户端ID”。
2. 查找“签名”证书: Google Play控制台->游戏服务->选择您的应用程序->API控制台项目->凭据->OAuth 2.0客户端ID->“由Google服务自动创建的Android客户端”->记下值(xx:xx:xx:等...) 注:为了在我的其他OAuth 2.0客户端ID中重用此值,我必须将其替换为某些虚拟数字。否则,您将收到错误:“证书已在其他项目中使用”。
3. 转到您现有的OAuth2客户端ID: Google Play控制台->游戏服务->选择您的应用程序->API控制台项目->凭据->OAuth 2.0客户端ID->从步骤1中选择“OAuth 2.0客户端ID”。 使用步骤2中的证书值更新证书值。
这解决了我的问题。多人游戏完美运行!

1
在我的情况下,我在发布游戏到Play Store之前,在开发者控制台中创建了新的游戏 -> 游戏服务 -> 添加新游戏。
当它要求我输入SHA1密钥时,我输入了Gradle为我生成的密钥(在Android Studio中,打开Gradle选项卡,双击PROJECT/Tasks/Android/singingReport。它将为您显示调试和发布的SHA1密钥)。
此后,开发人员控制台为我在API控制台中创建了项目(console.developers.google.com/apis/dashboard)。对于我的SHA1密钥,它生成了客户端ID。
然后,我发布了游戏并使用了Google Play应用签名。由于这个原因,Google 为我生成了一个不同的SHA1密钥。(您可以在开发者控制台(PROJECT/Release Management/App Signing)中看到该SHA1密钥。它使用“应用签名证书”中的SHA1)
这个SHA1密钥也会自动添加到API控制台中,但显然会生成不同的客户端ID。
然后,我进入开发者控制台中的游戏服务/PROJECT/Linked Apps,并在页面末尾勾选“OAuth2客户端ID”。它与我在发布应用程序之前输入的配对SHA1密钥的API控制台中的客户端ID相匹配(而不是新的客户端ID)。

最后,我通过这些步骤删除了我的API控制台项目,并从头开始执行了上述所有步骤。最终它起作用了!


是的,另一种修复方法。 - Berat Eyüboğlu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接