使用 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:

我正在尝试在我使用 LibGDX 框架制作的 Android 游戏中实现 Google 玩游戏排行榜。

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

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

因为我对排行榜感兴趣,所以我对 TypeANumber 项目感兴趣。如本项目githubReadMe.md中提示的已完成所有设置:

所以,我做了以下工作:

  1. 设置google为我的项目玩游戏服务
  2. 为它创建链接的应用程序和排行榜
  3. 替换 res/ids 中的 ID。xml
  4. 更改我的 build.grade Type-A-Number 项目中的包名称 应用程序 ID com.myGame.blah
  5. 编译并运行

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

我确实看到下面有一个带有消息的按钮 使用 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 与应用程序不匹配,但后来我也匹配了。

提前致谢

我收到这个错误是因为当我们在 linked app 之后点击 Authorize app 时,它显示了在 play store 上传的 apk 的默认 SHA1,但这与我们上传的不同所以要创建它,我们需要使用 keytool 命令。理想情况下,我们应该添加调试 SHA1 证书以及使用我们用来生成发布 apk 的密钥库的 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 的默认路径,默认情况下调试密钥库的密码是 android

更多详情请见下方link https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/