2013-07-27 226 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

相關問題