How to do Phone Authentication in Flutter using Firebase?

前端 未结 6 1793
刺人心
刺人心 2021-02-02 02:27

I have searched many websites and I didn\'t find a way to implement phone authentication in Flutter using Firebase. Can anyone tell me how to this?

6条回答
  •  没有蜡笔的小新
    2021-02-02 02:54

    I have implemented the phone auth singnIn with firebase in flutter its quite easy just import the firebase_auth library and validate the phone number is in proper format i.e it has a "+" sign in the beginning followed by country code then the phone number then the code goes like this

    if (phoneExp.hasMatch(phon))
       {
          final PhoneVerificationCompleted verificationCompleted=(FirebaseUser user){
            setState(() {
                          _message=Future.value("auto sign in succedded $user");
                          debugPrint("Sign up succedded");
                          _pref.setString("phonkey",user.phoneNumber.toString());
                          MyNavigator.goToDetail(context);
    //called when the otp is variefied automatically
                        });
          };
      final PhoneVerificationFailed verificationFailed=(AuthException authException){
        setState(() {
                      _message=Future.value("verification failed code: ${authException.code}. Message: ${authException.message}");
                    });
      };
    
      final PhoneCodeSent codeSent=(String verificationId,[int forceResendingToken]) async {
        this.verificationId=verificationId;
    
    
      };
    
      final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout = (String verificationId){
        this.verificationId=verificationId;
    
      };
    
      await _auth.verifyPhoneNumber(
        phoneNumber: phon,
        timeout: Duration(seconds: 60),
        verificationCompleted: verificationCompleted,
        verificationFailed: verificationFailed,
        codeSent: codeSent,
        codeAutoRetrievalTimeout: codeAutoRetrievalTimeout
        );
    
    
    
    }
    

    and if the phone wasn't able to detect the otp sent automatically, get the otp in a string and implement this function

    void _signInWithOtp() async{
      final FirebaseUser user = await _auth.signInWithPhoneNumber(
      verificationId: verificationId,
      smsCode: _otpController.text,
    );
    

提交回复
热议问题