首页 > 解决方案 > Flutter 电话身份验证 FirebaseAuthInvalidCredentialsException

问题描述

我只是通过使用正确的代码调用 verifyPhoneNumber(...) 来做到这一点。但错误的代码崩溃应用程序。尝试尝试/捕获但没有被捕获。以下是代码

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!')));
      }
}

标签: flutterfirebase-authentication

解决方案


尝试使用通用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!')));
  }

推荐阅读