2016-08-19 31 views
0

我正在使用新的Google登錄對我的應用程序中的用戶進行身份驗證。我正在按照官方文檔進行集成。無法處理Google登錄中的不同錯誤場景

https://developers.google.com/identity/sign-in/android/start

我已經產生WEB_CLIENT_ID和我能夠成功登錄,用戶但我在處理錯誤場景時遇到問題。

我的應用程序有2個主要的錯誤情況,我想爲他們顯示不同的錯誤信息。

  1. 當顯示帳戶選擇器對話框,並且用戶按下後退按鈕,那麼我需要顯示「用戶已取消操作」。
  2. 當用戶從該帳戶對話框選擇器選擇一個帳戶,他失去了在此期間,他的互聯網連接,然後我需要表現出「有一些問題,與網絡」

我現在面臨的問題就是在這兩個操作上,google auth api都會返回狀態碼12501.因此,我無法根據api返回的狀態提供不同的錯誤消息。這是我到目前爲止嘗試過的代碼。

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == REQ_CODE_GOOGLE) { 
     /* Google SignIn Callback result*/ 
     if (data == null) { 
     return; 
     } 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     if (result == null) { 
     return; 
     } 

     if (result.isSuccess()) { 
     // Signed in successfully, get idToken and userID. 

     } else { 
     // Login not successful. 
     Status status = result.getStatus(); 
     if (status == null) { 
      return; 
     } 

     if (status.isCanceled()) { 
      //User canceled the operation 
     } else if (status.getStatusCode() == CommonStatusCodes.INVALID_ACCOUNT) { 
      //Invalid account 
     } else { 
      //Generic error 
     } 
     } 
    } 
    } 

但是每次谷歌登錄失敗時,它總是進入else狀態。無法弄清楚如何爲不同類型的錯誤提供不同的錯誤消息?

回答

1

我通過向firebase添加了調試SHA-1密鑰進行修復。