Flutter 电话身份验证 FirebaseAuthInvalidCredentialsException

时间:2021-03-08 12:01:56

标签: flutter firebase-authentication

我只是通过使用正确的代码调用 verifyPhoneNumber(...) 来完成它的工作。 但错误的代码崩溃了应用程序。尝试过 try/catch 但没有被捕获。以下是代码

codeSent: (String verificationId, [int forceResendingToken]){
 ...
    onPressed: () async{
      final code = _codeController.text.trim();
      AuthCredential credential = PhoneAuthProvider.credential(
        verificationId: verificationId, smsCode: code
      );
      try{
        UserCredential result = await _firebase_auth.signInWithCredential(credential); //<-- Exception here
        User user = result.user;
        if(user != null){
          await signupParse(token, context);
        }
      } catch (FirebaseAuthInvalidCredentialsException) { // <---- doesn't get caught here
        FocusScope.of(context).unfocus();
        _scaffoldkey.currentState
        .showSnackBar(SnackBar(content: Text('Invalid code!')));
      }
}

1 个答案:

答案 0 :(得分:0)

尝试使用通用的 ExceptionPlatformException 而不是 FirebaseAuthInvalidCredentialsException 来捕获

onPressed: () async{
  final code = _codeController.text.trim();
  AuthCredential credential = PhoneAuthProvider.credential(
    verificationId: verificationId, smsCode: code
  );
  try{
    UserCredential result = await _firebase_auth.signInWithCredential(credential); //<-- Exception here
    User user = result.user;
    if(user != null){
      await signupParse(token, context);
    }
  } catch (Exception e) { // <---- doesn't get caught here
    FocusScope.of(context).unfocus();
    _scaffoldkey.currentState
    .showSnackBar(SnackBar(content: Text('Invalid code!')));
  }