2016-04-22 53 views
0

我已經使用AWS Mobile Hub生成了一個應用。谷歌登錄在一開始工作正常。但是,如果我向其他開發人員提供完全相同的代碼,則會顯示以下錯誤。或者,如果我重構軟件包名稱,Google登錄無法使用我的電腦。 (使用iOS谷歌登錄工作正常)。 我試圖按照所有說明,但沒有幫助。我還更改了android的OAuth 2.0客戶端ID(console.developers.google.com)的軟件包名稱。Google登錄不支持AWS Mobile Hub生成的Android應用

錯誤消息: Google失敗。未知(服務:谷歌登錄;狀態碼:503;錯誤代碼:503;請求ID:谷歌登錄)packageName Vs applicationID Android AWS移動登錄

這是一種解決方案,與我一起工作: http://mobiledevelopmenttips.blogspot.fi/2016/02/packagename-vs-applicationid-android.html?showComment=1461311778234#c2030693740616382564

回答

0

很抱歉,您在AWS Mobile Hub示例應用程序中遇到了Google登錄問題。這裏有幾件事要檢查。

  1. 確保任何其他開發人員已註冊爲測試帳戶。 https://developers.google.com/games/services/console/testpub#enabling_accounts_for_testing

  2. 確保您在調試模式下運行應用程序,或者使用相同的證書對其進行簽名。 https://developer.android.com/tools/publishing/app-signing.html#studio

  3. 如果你改變了包名,確保你在的build.gradle文件中的變化,不僅僅是在AndroidManifest.xml文件。

希望如果你檢查這些問題,你會得到的東西。否則,我會建議您查看Google的故障排除文檔。

真誠, Andrew C製作 AWS移動應用

+0

感謝您的回答。 1。我們爲所有開發人員共享相同的gmail用戶ID,所以這不會成爲問題。 2.我們正在使用調試模式。 3.完成。 4.一個新問題:爲什麼AWS Mobile Hub需要「Google Web App客戶端ID」?我無法在Android代碼中看到它。 (我可以從代碼中找到「Google Android Client ID」) –

+0

Amazon Cognito的服務需要Google Web App客戶端ID才能代表您與Google進行通信。 –

+0

好的。在移動分析中我注意到了一件事。我們的應用程序可以看到兩次完全相同的應用程序名稱(其他的活動用戶更多)。但在Mobile Hub這個應用程序只是一次。什麼原因導致問題?如何刪除其他? –

0

尤卡,

假設沒有其他應用程序ID或包名稱從項目更改代碼,使用時簽到,預計與谷歌此錯誤你的debug.keystore和共享項目代碼。

出現此錯誤時簽名證書指紋(SHA-1)從console.developers.google.com項目爲Android的客戶ID不匹配的簽署應用程序開發者的指紋 。要重現您的錯誤,請在Google開發控制檯中修改Android客戶端ID SHA-1指紋值,然後嘗試從當前環境登錄。 我希望類似的錯誤:

com.amazon.mysampleapp E/SignInActivity:User Sign-in failed for Google 
: Unknown (Service: google-sign-in; Status Code: 503; Error Code: 503; 
Request ID: google-sign-in) 

enter image description here

問題:每個開發環境都有一個用來簽署APK一個獨特的調試密鑰庫。 Google登錄僅限制您使用您在創建Android客戶端ID時提供的已知SHA-1簽名證書籤名的應用。另一個開發人員有不同的指紋,簽署apk並因爲他/她的指紋未與Android客戶端ID關聯而失敗。

解決方案:創建一個包含其他開發人員的指紋(你可以有一個谷歌控制檯項目內的多個谷歌的客戶ID),您的谷歌開發者控制檯項目相關的新的Android客戶端ID。 注意:在Mobile Hub項目中啓用Google登錄功能時,Mobile Hub實際上將代表您在IAM中創建一個OpenID Connect提供商(accounts.google.com)。 在提供商內部,Mobile Hub將您作爲「受衆」提供的Android客戶端ID添加到提供商。還在我這兒?

您提供的Android客戶端ID不在您生成的示例代碼中,僅用於識別試圖直接向Google發送API調用的已簽名應用。

因此,回顧一下解決方案:

  1. 創建一個新的Android客戶端ID(谷歌開發控制檯內)與下列移動中心控制檯內的側面板幫助文檔中介紹的步驟其他開發人員的指紋。

  2. 登錄AWS IAM控制檯,選擇「身份提供商」>「accounts.google.com」,然後將新生成的Android客戶端ID添加爲新的「受衆羣體」。如果您忘記/忽略此步驟,則會在嘗試登錄時從Cognito獲取狀態代碼400 NotAuthorizedException錯誤的代幣受衆羣體。

這不會是生產應用程序的問題。 當您準備在應用商店發佈您的應用時,請按照Google建議的步驟爲您的製作應用生成新的最終客戶端ID,然後將該客戶端ID作爲「受衆」提供給IAM。一旦您簽署併發布它,所有用戶都擁有相同的已簽名APK,並且可以通過Google登錄進行身份驗證。 https://support.google.com/cloud/answer/6158849?hl=en#android

+0

今天我試圖使用調試模式下的重構真實應用程序(基於示例應用程序)進行此項工作(尚未與其他開發人員一起)。我已經三重檢查了所有您提到的事情(gradle vs. manifest,iam受衆列表,Google控制檯ID,AWS配置的Android代碼,甚至移動集線器都正確並保存了所有ID)。即使對我來說它也不起作用(重構包之後從未有過)。 Facebook登錄仍然適用於Android。使用iPhone,Facebook登錄和Google登錄仍然可以毫無問題地工作。 –

+0

某些日誌信息: GoogleSignInProvider:檢索ID令牌時出錯。 com.google.android.gms.auth.GoogleAuthException:未知 ... IdentityManager:SignInResultsAdapter.onError():Google提供程序錯誤。未知(服務:谷歌登錄;狀態代碼:503;錯誤代碼:503;未知):未知的用戶登錄失敗。請求ID:google-sign-in) –

+0

SignInActivity:Google用戶登錄失敗:未知(服務:google-sign-in;狀態碼:503;錯誤代碼:503;請求ID:谷歌登錄) com.amazonaws.AmazonServiceException:未知(服務:google-sign-in;狀態碼:503;錯誤代碼:503;請求ID:谷歌登錄) –

0

最後,它開始時,我做這四兩件事的工作:

  1. 創建新的AWS移動樞紐工程

  2. 創建新的谷歌憑證的項目和使用新的ID移動樞紐工程

  3. 在我們真實的應用程序中重新構造了一個新名稱的包名(我不是指從早先重構的com.mysampleapp包名重構,但我們必須決定新的pa我們內部使用ckage路徑)

    • 如這樣com.company.myapp - > com.company.myapp2
  4. 我放回旅客登錄功能在AWS移動樞紐

    • 這是使它適用於我的最後一步,但對於其他可能有類似問題的人來說,這可能並不重要。如果我們允許客人在項目期間登錄,我們有不同的選擇,這就是爲什麼它對我們很重要。