2017-08-11 58 views
0

剛開始使用Firebase手機驗證。看起來很漂亮,但是我碰到了一個有bug的牆。Firebase手機驗證錯誤400

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "invalid", 
    "message": "SESSION_EXPIRED" 
    } 
    ], 
    "code": 400, 
    "message": "SESSION_EXPIRED" 
} 
} 

與驗證碼開始:(!標準文檔代碼)呈現

var applicationVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container', { 
     'size': 'invisible', 
     'callback': function(response) { 

     }, 
     'expired-callback': function() { 

     } 
    }); 

其和驗證碼的效果很好。

接下來是登錄位,您將身份驗證碼發送到您的手機。很好的作品:

$scope.signInWithPhoneNumber = function signInWithPhoneNumber() { 


     var phoneNumber = "*censored*"; 
     var appVerifier = window.recaptchaVerifier; 
     firebase.auth().signInWithPhoneNumber(phoneNumber, applicationVerifier) 
      .then(function (confirmationResult) { 
      // SMS sent. Prompt user to type the code from the message, then sign the 
      // user in with confirmationResult.confirm(code). 
      window.confirmationResult = confirmationResult; 




      $scope.setConfirmationResult(confirmationResult); 
      alert('Result: ' + JSON.stringify(confirmationResult)); 
      }).catch(function (error) { 
      // Error; SMS not sent 
      alert('Error: ' + error); 
      // ... 
     }); 
     }; 

最後它是用戶從文本消息輸入的代碼的驗證。下面是我得到的錯誤400:

$scope.AuthenticateCode = function (code) { 


     var code = String(document.getElementById("auth_code").value); 

     var confirmationResult = $scope.getConfirmationResult(); 
     alert(code); 
     confirmationResult.confirm(code).then(function (result) { 
      // User signed in successfully. 
      var user = result.user; 
      console.log('Signed In! ' + JSON.stringify(user)); 
      // ... 
     }).catch(function (error) { 
      // User couldn't sign in (bad verification code?) 
      // ... 
     }); 

     }//end of AuthenticateCode 

錯誤從VerifyPhone方法來: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPhoneNumber?key=審查

任何幫助或想法?

非常感謝, 基蘭

回答

1

好了,有2倍可能的原因:

  1. 代碼過期。用戶花了很長時間才能提供SMS代碼並完成登錄。
  2. 該代碼已成功使用。我認爲這是可能的原因。在這種情況下,你需要獲得一個新的驗證ID。通過您正在使用的隱形reCAPTCHA獲取新的reCAPTCHA令牌。