2017-10-06 100 views
0

我試圖在我的應用中實施Firebase手機身份驗證。 我介紹了GitHub上的firebase安卓文檔,但我無法通過短信獲取代碼。未接收Firebase電話身份驗證中的代碼。

我不知道它爲什麼會發生?我正在真實設備上測試它。

此外,我發送短信給另一個,因爲真正的設備沒有SIM卡。但我相信這不是問題。這樣對嗎?

這是我的代碼

void logIn(){ 

    mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { 

     @Override 
     public void onVerificationCompleted(PhoneAuthCredential credential) { 
      // This callback will be invoked in two situations: 
      // 1 - Instant verification. In some cases the phone number can be instantly 
      //  verified without needing to send or enter a verification code. 
      // 2 - Auto-retrieval. On some devices Google Play services can automatically 
      //  detect the incoming verification SMS and perform verificaiton without 
      //  user action. 
      Log.d("verification", "onVerificationCompleted:" + credential); 
      // [START_EXCLUDE silent] 
      mVerificationInProgress = false; 
      // [END_EXCLUDE] 

      // [START_EXCLUDE silent] 
      // Update the UI and attempt sign in with the phone credential 
      // [END_EXCLUDE] 
      signInWithPhoneAuthCredential(credential); 
     } 

     @Override 
     public void onVerificationFailed(FirebaseException e) { 
      // This callback is invoked in an invalid request for verification is made, 
      // for instance if the the phone number format is not valid. 
      Log.w("verification", "onVerificationFailed", e); 
      // [START_EXCLUDE silent] 
      mVerificationInProgress = false; 
      // [END_EXCLUDE] 

      if (e instanceof FirebaseAuthInvalidCredentialsException) { 

      } else if (e instanceof FirebaseTooManyRequestsException) { 
       // The SMS quota for the project has been exceeded 
       // [START_EXCLUDE] 
       Snackbar.make(findViewById(android.R.id.content), "Quota exceeded.", 
         Snackbar.LENGTH_SHORT).show(); 
       // [END_EXCLUDE] 
      } 


     } 

     @Override 
     public void onCodeSent(String verificationId, 
           PhoneAuthProvider.ForceResendingToken token) { 
      // The SMS verification code has been sent to the provided phone number, we 
      // now need to ask the user to enter the code and then construct a credential 
      // by combining the code with a verification ID. 
      Log.d("verification", "onCodeSent:" + verificationId); 

      // Save verification ID and resending token so we can use them later 
      mVerificationId = verificationId; 
      mResendToken = token; 


     } 
    }; 

    PhoneAuthProvider.getInstance().verifyPhoneNumber(
      "+79995198722",  // Phone number to verify 
      60,     // Timeout duration 
      TimeUnit.SECONDS, // Unit of timeout 
      this,    // Activity (for callback binding) 
      mCallbacks);  // OnVerificationStateChangedCallbacks 

    mVerificationInProgress = true; 
} 

private void verifyPhoneNumberWithCode(String verificationId, String code) { 
    // [START verify_with_code] 
    PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); 
    // [END verify_with_code] 
    signInWithPhoneAuthCredential(credential); 
} 


private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) { 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, update UI with the signed-in user's information 
         Log.d("signIn", "signInWithCredential:success"); 

         FirebaseUser user = task.getResult().getUser(); 

        } else { 
         // Sign in failed, display a message and update the UI 
         Log.w("signIn", "signInWithCredential:failure", task.getException()); 
         if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) { 

         } 

        } 
       } 
      }); 
} 
提前

謝謝!

+1

不錯,弗蘭克編輯但不是幫手.. ingineer .... – Peter

回答

0

我認爲您的問題可能是SHA-1指紋,因此您需要更新Firebase控制檯中的SHA-1密鑰。

步驟:

登錄Firebase console

  1. 點擊你的項目,你可以看到概述你的項目
  2. 點擊3個點,然後單擊設置
  3. 單擊添加手指後打印(底部)
  4. 粘貼您的SHA-1鍵點擊保存。

步驟SHA-1鍵:從左側面板

  • Android Studio中

    1. 選擇gradle這個選擇你的App
    2. 前往任務 - > Android的 - > signingReport

    然後你可以看到Sha-1鍵。

    enter image description here

  • 相關問題