10

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

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

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

起初一切都很好——我能够创建一个自动化房间,发送和接收短信等。但经过 15 分钟的测试,我无法再使用 Galaxy Tab 上的帐户“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 添加到我的清单中。

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

我真的很感谢你的帮助

4

4 回答 4

3

在以下情况下会发生此行为:

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

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

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

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

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

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

于 2013-09-11T06:04:55.790 回答
2

我遇到了与 user2446468 完全相同的问题,我的一些测试帐户在工作了几个小时后无法登录(在最初的失败之后,他们只会在半小时左右后才能工作......)

这是我这次活动的日志...

08-06 17:03:08.945: D/Volley(21844): [664] ip.a: HTTP response for request=<[ ] https://www.googleapis.com/games/v1whitelisted/applications?language=en_US&platformType=ANDROID NORMAL 20> [lifetime=5926], [size=531], [rc=200], [retryCount=0]
08-06 17:03:08.975: D/Volley(21844): [1] ia.b: 5956 ms: [ ] https://www.googleapis.com/games/v1whitelisted/applications?language=en_US&platformType=ANDROID NORMAL 20
08-06 17:03:09.075: I/dul(21844): I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond
08-06 17:03:09.075: I/dul(21844): Retrying request
08-06 17:03:09.295: W/AlarmManager(2301): FACTORY_ON= 0
08-06 17:03:09.915: E/Volley(21844): [655] ip.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/11*******************
08-06 17:03:09.950: E/SignInIntentService(21844): Access Not Configured
08-06 17:03:09.950: E/SignInIntentService(21844): ark
08-06 17:03:09.950: E/SignInIntentService(21844):   at ams.b(SourceFile:189)
08-06 17:03:09.950: E/SignInIntentService(21844):   at ams.a(SourceFile:111)
08-06 17:03:09.950: E/SignInIntentService(21844):   at adz.a(SourceFile:220)
08-06 17:03:09.950: E/SignInIntentService(21844):   at adz.a(SourceFile:201)
08-06 17:03:09.950: E/SignInIntentService(21844):   at adi.a(SourceFile:489)
08-06 17:03:09.950: E/SignInIntentService(21844):   at att.a(SourceFile:221)
08-06 17:03:09.950: E/SignInIntentService(21844):   at com.google.android.gms.games.service.GamesSignInIntentService.onHandleIntent(SourceFile:343)
08-06 17:03:09.950: E/SignInIntentService(21844):   at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
08-06 17:03:09.950: E/SignInIntentService(21844):   at android.os.Handler.dispatchMessage(Handler.java:99)
08-06 17:03:09.950: E/SignInIntentService(21844):   at android.os.Looper.loop(Looper.java:137)
08-06 17:03:09.950: E/SignInIntentService(21844):   at android.os.HandlerThread.run(HandlerThread.java:60)
08-06 17:03:09.965: E/LoadSelfFragment(7796): Unable to sign in - application does not have a registered client ID

更新:我有充分的理由相信确实有一些东西在一段时间内“阻止”了登录(我做了一些测试,编译了一个压力测试版本,它会不断尝试登录(非常合理的 10 秒冷却时间,以免达到任何请求配额)如果登录失败......结果是大约 30-45 分钟的离线时间,然后完全恢复(没有任何用户干预)......我已经得到以下理论:

  • 未发布的应用程序可能有不同的强制配额:(
  • 当 google 尝试验证用户是否确实在未发布应用程序的测试人员列表中时,这可能是服务器端错误(周围有任何 google 员工为我们检查它吗?)
  • 与上述相同,但对于未发布的应用程序本身(但我对此表示怀疑,因为可以在给定时间使用用户 A 而不是用户 B 登录)
  • 本地游戏服务活动中可能内置了一些缓存(为 APP 缓存了错误的客户端 ID(可能是某个空 ptr),从而正确接收到 403 错误),如果是这样,这是 Play 游戏服务 API 本身中的一个错误,而不是服务器端...

如果我发现什么我会及时通知你们...

于 2013-08-07T17:39:24.213 回答
0

您是否在两台设备上都添加了测试人员帐户(通过设置)?

我知道这是一个愚蠢的问题,但我的测试人员帐户只在一台设备上,并且得到了相同的(非常无用的)错误消息。您不能仅仅假设您可以通过常规登录流程将测试人员帐户添加到第二台设备 - 除非设备上已经有具有测试人员访问权限的 Google 帐户,否则它只会失败。

于 2013-09-16T15:18:33.833 回答
0

我最近也开始遇到这些问题。我认为他们可能正在做一些维护。我刚开始使用不同的测试帐户,一切又开始工作了。当然,我现在还有其他问题。我正在调查我的问题,我会在找到答案后更新您的信息。现在,我建议只使用不同的(或新的)测试帐户(并确保您记得授权该帐户在开发者控制台下进行测试!)

于 2013-07-27T17:07:35.730 回答