我创造了我的SHA-1。jks文件,在我用我的包名和SHA-1代码创建我的google-services.json之后。在我把我的应用程序发布到Appstore之后。我的登录服务运行良好,但一小时后所有服务都停止了。
我在每个平台上都使用了相同的SHA-1,我再次检查了同样的SHA-1。
Android Studio SHA-1 输出
怎么了?
我解决了这个问题,首先,我从play store下载了我的apk,然后解压缩我的apk并检查我的SHA,我看到Play Store使用了应用程序签名证书SHA。但是我在任何地方都使用了上传证书。
在我将我的API sha更改为Play Store App Signing sha后,工作得很好。
如果您在发布应用程序时启用了“Google Play应用程序签名”,您现在可能会遇到两个指纹:
>
来自本地密钥库(keytool -exportcert -keystore path-to-production-keystore -list -v)的密钥库,称为“upload cert”。
Google在启用签名时生成的新证书(“签名证书”)。
这种情况的冲突在于,您还有两个OAuth 2.0客户端id:
您可以从以下位置验证这一事实: 谷歌播放中心 -
解决方案
为了让谷歌登录(以及所有相关的游戏服务功能)正常工作,我必须纠正我先前存在的OAuth2客户端ID(我在发布应用程序之前创建的那个)的指纹。
>
查找“正确的”OAuth 2.0客户端ID:Google Play Consol-
寻找“签名”证书:Google Play控制台-
转到您预先存在的 OAuth2 客户端 ID:Google Play 管理中心 -
这解决了我的问题。多人游戏完美运行!
就我而言,我从开发者控制台创建了一个新游戏
当它要求我提供SHA1密钥时,我输入了gradle为我生成的密钥(在Android Studio中,打开Gradle选项卡并双击PROJECT/Tasks/Android/singingReport。它将显示用于调试和发布的 SHA1 键)
之后,开发人员控制台在API控制台中为我创建了项目(在console.dedevelopers.google.com/apis/dashboard中)。对于我的SHA1密钥,它生成了客户端ID
然后我在Play商店中发布了游戏并使用Google Play应用程序签名。正因为如此,谷歌为我生成了一个不同的SHA1密钥。(可以在开发人员控制台(项目/发布管理/应用签名)中看到 SHA1。它在“应用签名证书”中使用 SHA1
这个SHA1键也是在API控制台中自动添加的,但是显然生成了不同的客户端ID。
然后我进入开发者控制台中的游戏服务/项目/链接的应用程序,并检查页面末尾的“OAuth2客户端ID”。它与API控制台中的客户端ID匹配,该ID与我在发布应用程序(不是新的)之前输入的SHA1密钥配对
最后,我通过执行这些步骤删除了我的API控制台项目,并从头开始执行上面的所有步骤。终于成功了!