android - Google Play 游戏服务的登录问题

标签 android libgdx google-play-games

我目前正在我的游戏中实现 Google Play 游戏服务以提供多人实时游戏功能(使用 libgdx 和 BaseGameUtils)。

使用我的主要 Google 帐户(登录、创建房间等)在我的 Nexus 4 上一切正常,称之为“A”。

为了测试自动匹配和消息发送/接收,我创建了第二个 Google 帐户,将其命名为“B”,并将此帐户添加到我的(恢复出厂设置的)Samsung Galaxy Tab。

一开始一切正常——我可以创建一个自动匹配的房间,发送和接收短信等。但是经过 15 分钟的测试,我无法再使用 Galaxy 上的“B”账户登录标签。 Nexus 4 上的帐户“A”仍然可以正常工作。

为了排除设备的任何问题,我已将帐户“A”添加到我的 Galaxy Tab 并成功登录。我还在我的 Nexus 4 中添加了帐户“B”,但无法登录。

等待一段时间(30 分钟)后,立即可以在两台设备上使用帐户“B”登录。 这就是我目前的状态:我可以用账户“B”做一些测试,但过了一会儿它就被“封锁”了,我必须等待,直到我可以再次使用它。帐户“A”始终有效。

在这段“阻塞”时间里,我尝试了所有方法:删除应用程序数据/缓存、删除播放服务数据/缓存、取消应用程序与我的“B”帐户的链接。什么都不管用。 这是 logcat 输出,如果我想在帐户“B”被“阻止”时登录:

07-27 13:20:35.508: I/dul(13742): I/O exception (org.apache.http.NoHttpResponseException)   caught when processing request: The target server failed to respond
07-27 13:20:35.508: I/dul(13742): Retrying request
07-27 13:20:35.808: E/Volley(13742): [1224] ip.a: Unexpected response code 403 for   https://www.googleapis.com/games/v1/players/102515671693140579145
07-27 13:20:35.818: E/SignInIntentService(13742): Access Not Configured
07-27 13:20:35.818: E/SignInIntentService(13742): ark
07-27 13:20:35.818: E/SignInIntentService(13742):   at ams.b(SourceFile:189)
07-27 13:20:35.818: E/SignInIntentService(13742):   at ams.a(SourceFile:111)
07-27 13:20:35.818: E/SignInIntentService(13742):   at adz.a(SourceFile:220)
07-27 13:20:35.818: E/SignInIntentService(13742):   at adz.a(SourceFile:201)
07-27 13:20:35.818: E/SignInIntentService(13742):   at adi.a(SourceFile:489)
07-27 13:20:35.818: E/SignInIntentService(13742):   at att.a(SourceFile:221)
07-27 13:20:35.818: E/SignInIntentService(13742):   at   com.google.android.gms.games.service.GamesSignInIntentService.onHandleIntent(SourceFile:343 )
07-27 13:20:35.818: E/SignInIntentService(13742):   at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
07-27 13:20:35.818: E/SignInIntentService(13742):   at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 13:20:35.818: E/SignInIntentService(13742):   at android.os.Looper.loop(Looper.java:137)
07-27 13:20:35.818: E/SignInIntentService(13742):   at android.os.HandlerThread.run(HandlerThread.java:60)
07-27 13:20:35.818: E/LoadSelfFragment(16159): Unable to sign in - application does not have a registered client ID

当然,我一个已注册的客户 ID,否则我无法使用帐户“A”登录,有时也无法使用帐户“B”登录。当然,我将开发者控制台中的两个帐户都添加到了测试白名单中。当然,我通过资源链接将正确的应用程序 ID 添加到我的 list 中。

我认为这与我的代码无关,因为账户 A 从来没有问题,而账户 B“有时”有效。测试白名单是否存在任何已知问题?或者你对如何解决这个问题有什么建议吗?顺便说一句,我也不认为我的配额受到限制,因为这会影响两个帐户,不是吗?

非常感谢你的帮助

最佳答案

如果出现以下情况,将发生此行为:

当前用户连接到任何房间并且:

应用会重新启动,以便它尝试登录 Google 服务,而无需按照 Google Play 服务的要求完成断开连接部分。

我发现这经常发生在我身上(对我来说很不幸),因为我正在弄清楚如何在我的 Android 代码和 LibGDX 代码端之间传递消息(我的应用程序会由于同步问题而锁定)。我还设置了一些测试帐户,我可以“循环”通过这些帐户以避免被完全锁定而无法登录。但是,我发现如果我在重新启动应用程序之前使用任务管理器终止进程,90% 以上的时间,我可以继续使用同一个帐户。

如果您正在更新您的代码,并在您在房间中时加载到设备,这也会为您赢得该帐户大约 30 分钟的服务器愤怒。

简而言之,要让您的帐户保持活力:

1) 确保在更新代码之前离开房间(我发现不需要退出 PS) 2)如果您的应用程序锁定...通过任务管理器(我使用三星)终止进程很可能会让您的帐户继续(您可以在 logcat 中看到它在您这样做时调用断开连接)当您启动时再次应用。

关于android - Google Play 游戏服务的登录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17897318/

相关文章:

android - Cordova 抛出异常跨源请求仅支持协议(protocol)方案

android - Google Drive Api 已弃用(Google 玩游戏 -> 保存的游戏)

android - Google Play Games y GoogleMobileAds 不能在 Unity 5 中协同工作

java - Libgdx 视口(viewport)不拉伸(stretch)

android - API 方法 9 在 API 方法 3 Android 项目中编译,运行时错误

android - 如何在多个 Activity 中使用 BaseGameActivity.getApiClient()?

java - 由于四处移动文件,Android Studio 项目搞砸了

android - Google Play 控制台 - 针对不同国家/地区的多个 APK

android - R无法解析为变量。 Eclipse错误

java - 在 libgdx 中隐藏返回、主页和最近使用的应用程序按钮