使用 android 基本示例登录排行榜失败并出现 com.google.android.gms.common.api.ApiException: 4:

Posted

技术标签:

【中文标题】使用 android 基本示例登录排行榜失败并出现 com.google.android.gms.common.api.ApiException: 4:【英文标题】:Leaderboard signin using android basic samples fails with com.google.android.gms.common.api.ApiException: 4: 【发布时间】:2018-09-10 21:29:48 【问题描述】:

我正在尝试在我的一款使用 LibGDX 框架制作的 android 游戏中实现 Google play 游戏排行榜。

尝试在以下存储库中实现 google 提供的基本 android 示例

https://github.com/playgameservices/android-basic-samples

因为我对排行榜感兴趣,所以我对 TypeANumber 项目感兴趣。正如该项目的 github ReadMe.md 中所建议的,所有设置都已完成:

所以,我做了以下事情:

    为我的项目设置 google play 游戏服务 为它创建了链接的应用程序和排行榜 替换 res/ids.xml 中的 ID 在我的 Type-A-Number 项目的 build.grade 中更改包名称 应用程序IDcom.myGame.blah 编译运行

在我实际登录 google play 游戏的移动物理设备上执行,但执行时仍然如此。

我确实看到下面有一个带有消息的按钮 使用 Google 登录,与您的朋友分享您的分数和成就。

单击此按钮进行记录时,它显示正在连接到应用程序,但过了一段时间后我弹出错误 4:

`04-01 17:59:15.604 27814-27814/? D/TanC: signInSilently(): failure
                                         com.google.android.gms.common.api.ApiException: 4: 
                                             at com.google.android.gms.common.internal.zzb.zzy(Unknown Source)
                                             at com.google.android.gms.common.internal.zzbk.zzz(Unknown Source)
                                             at com.google.android.gms.common.internal.zzbl.zzr(Unknown Source)
                                             at com.google.android.gms.common.api.internal.zzs.zzc(Unknown Source)
                                             at com.google.android.gms.common.api.internal.zzs.setResult(Unknown Source)
                                             at com.google.android.gms.auth.api.signin.internal.zzg.zza(Unknown Source)
                                             at com.google.android.gms.auth.api.signin.internal.zzt.onTransact(Unknown Source)
                                             at android.os.Binder.execTransact(Binder.java:388)
                                             at dalvik.system.NativeStart.run(Native Method) 04-01 17:59:15.604 27814-27814/? D/TanC: onDisconnected()`

任何人都可以建议,我缺少什么以及问题所在。经过搜索,我了解到可能是我的 Oauth 2.0 客户端 ID 与应用程序不匹配,但后来我也匹配了。

提前致谢

【问题讨论】:

在libgdx github repo 中找到了带有 Google Play 游戏服务集成的官方 Libgdx 示例。这可能会对您有所帮助。 我已经检查过了。它说的是回购中缺少的 BaseGameutils 。 【参考方案1】:

我收到此错误是因为当我们在链接应用程序后单击授权应用程序时,它会显示在 Play 商店上传的 apk 的默认 SHA1,但是这与我们上传的不同,因此我们需要创建它使用 keytool 命令。理想情况下,我们应该使用我们用来生成发布 apk 的密钥库添加调试 SHA1 证书以及 SHA1 证书。

以下是命令,其中 C:\Program Files\Java\jdk1.7.0_72\bin 是您电脑中 Java 安装的路径,而 D:\Java\libGdx\apk\keystore\android.jks 是安装路径您的生产密钥库

C:\Program Files\Java\jdk1.7.0_72\bin>keytool -list -keystore D:\Java\libGdx\apk\keystore\android.jks 输入密钥库密码: 密钥库类型:JKS 密钥库提供者:SUN 您的密钥库包含 1 个条目 briskybird,2017 年 12 月 9 日,PrivateKeyEntry, 证书指纹(SHA1):27:XX:XX:XX:XX:B2:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:BD:BF

使用下面生成调试证书

C:\Program Files\Java\jdk1.7.0_72\bin>keytool -list -keystore C:\Users\USER.android\debug.keystore

C:\Users\.android\debug.keystore 是 debug.keystore 的默认路径,debug keystore 的密码默认为 android

更多细节可以在下面的链接中看到 https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/

【讨论】:

以上是关于使用 android 基本示例登录排行榜失败并出现 com.google.android.gms.common.api.ApiException: 4:的主要内容,如果未能解决你的问题,请参考以下文章

Google登录游戏失败

谷歌登录失败

Android FireBase - 连接到游戏服务排行榜

谷歌游戏服务登录问题(第一次尝试失败,第二次成功)

用于 Google 登录的 Android Firebase 身份验证失败

Unity Android 游戏可以使用 Google Play 游戏插件登录,但无法从排行榜加载分数