2013-07-27 181 views
10

我目前正在将Google Play游戏服务应用到我的游戏中,以提供多人实时游戏功能(使用libgdx和BaseGameUtils)。Google Play游戏服务登录问题

一切工作正常我的Nexus 4与我的主要谷歌帐户(登录,创建一个房间等),称它为“A”。

为了测试自动匹配和消息发送/接收,我创建了第二个Google帐户,称之为“B”,并将此帐户添加到我的(工厂重置的)Samsung Galaxy Tab中。

起初在那里工作的一切都很好 - 我能够创建一个自动匹配的房间,发送和接收短信等,但经过15分钟的测试后,我无法再登录帐户“B” Galaxy Tab。 Nexus 4上的帐户“A”仍能正常工作。

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

等待一段时间(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“有时”工作。测试白名单中是否存在任何已知问题?或者你有什么建议如何解决这个问题?顺便说一句,我也不认为我的配额限制,因为这会影响两个帐户,不是吗?

我真的很感谢你的帮助

+0

您已经发布的游戏吗?我在模拟器上测试时看到过这样的事情,但在玩过已发布游戏的真实设备上却没有。 – IanB

+0

嗨,实际上游戏没有发布(所以我必须把测试帐户放在白名单上)。我不测试仿真器,只在真实设备上测试。 – mavoka

+0

我的观点是,当游戏发布时你不太可能看到这个问题。发布它并尝试它可能会更快 - 我不明白在应用程序中这可能是一个问题。 – IanB

回答

0

我最近开始有这些问题也是如此。我认为他们可能在做一些维护工作。我刚开始使用一个不同的测试帐户,它都开始工作了。当然,我现在有其他问题。我正在调查我的问题,我会更新你的,因为我找到了安格斯。现在,我建议只使用一个不同的(或新的)测试帐户(并确保您记得授权该帐户在开发者控制台下进行测试!)

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秒冷却时间,为了不达成任何请求配额),如果登录失败......结果是一个aprox的30-45分钟的离线期间和之后完全康复(无需用户干预)......我已经得到了以下理论:

  • 可能会有不同的强制配额未公开的应用程序:(
  • 当谷歌试图如果用户确实在测试列表中未公开的应用程序(各地的任何Google员工检查我们?)来验证
  • 同样的事情上面,但是对于未发表的,这可能是一个服务器端错误应用程序本身(但我怀疑这一点,因为它可以登录与用户A,而不是在给定的时间用户B)
  • 可能有一些高速缓存内置于本地游戏服务活动(缓存错误的客户端ID (可能是一个空ptr的地方)的APP,因此接收403错误正确),如果是这样,这是一个错误在Play游戏服务API本身,而不是服务器端...

我应该发现任何东西会让你们张贴。 ..

+0

嗨,我还有问题(测试atm)。如果它在您发布您的应用程序时有效,您是否尝试过?我绝对很忙,所以我没有时间在我的私人Android项目上工作。 我也认为这是一个服务器端的错误。可能他们不希望有两个不同的帐户使用相同的IP登录。 – mavoka

+0

@ user2446468不幸的是,我没有授权发布这个应用程序,我也没有授权(合法)重新使用任何代码来创建一个不同的开发人员帐户下的测试应用程序...我会升级此问题以尝试获得某些注意力它... –

+0

小更新:我注意到,如果出于某种原因,在交易期间“谷歌玩游戏服务”活动崩溃,此问题也可能发生(临时锁定帐户)... –

3

会发生此行为,如果:

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

应用程序重新启动,以便它试图登录到谷歌服务,而无需通过断开部分为已消失Google Play服务需要此功能。

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

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

总之,让您的帐户可行的:

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

+0

嗨,谢谢为了您的回应。所以你说的是我必须正确断开Goog​​le Play服务(即离开房间),在adb杀死我正在运行的应用程序之前? 但是,当它通过任务管理器杀死它时,它为什么还能工作?我认为,那个任务管理器在内部工作时就像adb一样在杀死应用程序时..嗯.. 尽管如此,非常感谢你的回答,我会很快尝试它(仍然很忙atm :()并将你的答案标记为我接受的答案,如果它的工作原理! – mavoka

+0

我相信adb安装不能像任务管理器一样工作当使用任务管理器时,我可以在logcat中跟踪它关闭服务和断开连接(我在那时得到一个onPeerLeft通知给我的其他设备,如果我没有杀死这个进程安装,那么没有收到onPeerLeft通知) – user2346305

0

你有没有加入到两个设备(通过设置)一个测试账号?

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

+0

嗨,不知道我是否正确地打开你的帖子。使用我的标准Google帐户,在开发者控制台中添加为测试人员 在第二台设备上,我添加了测试人员帐户作为第二个帐户(在我的标准Google帐户旁边)。我想登录Google Play游戏服务,它询问我要使用哪个帐户(然后使用测试帐户)。但是我也在此设备上删除了我的主帐户,因此测试人员帐户是“主要”帐户。尽管如此,msg始终存在相同的错误。 – mavoka

+0

我有一台设备没有在设备的任何地方启用测试仪帐户。我得到了同样的错误信息。 但是,如果您在每台设备上至少有一个测试人员帐户,那么您的问题可能会有所不同。 – optimality

相关问题