Как сделать Аутентификацию Телефона во Флаттере, используя Firebase? - PullRequest
0 голосов
/ 04 мая 2018

Я искал много веб-сайтов и не нашел способа реализовать проверку подлинности телефона во Flutter с использованием Firebase. Может кто-нибудь сказать мне, как это?

Ответы [ 5 ]

0 голосов
/ 08 июля 2019

У меня есть пошаговое объяснение репозитория с исходным кодом Проверка ниже, хранилище поможет вам https://github.com/myvsparth/flutter_otp_auth

0 голосов
/ 30 июня 2019

В настоящее время _signInPhoneNumber устарело, поэтому используйте это:

try {
    AuthCredentialauthCredential = PhoneAuthProvider.getCredential(verificationId:verificationsCode: smsCode);

    await _firebaseAuth
      .signInWithCredential(authCredential)
      .then((FirebaseUser user) async {
         final FirebaseUser currentUser = await _firebaseAuth.currentUser();
         assert(user.uid == currentUser.uid);
         print('signed in with phone number successful: user -> $user');
    }
}
0 голосов
/ 09 августа 2018

Я реализовал аутентификацию телефона с помощью firebase во флаттере, это довольно просто, просто импортируйте библиотеку firebase_auth и проверьте, что номер телефона находится в правильном формате, то есть в начале есть знак «+», за которым следует код страны, а затем номер телефона. тогда код выглядит так

if (phoneExp.hasMatch(phon))
   {
      final PhoneVerificationCompleted verificationCompleted=(FirebaseUser user){
        setState(() {
                      _message=Future<String>.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<String>.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
    );



}

и, если телефон не смог автоматически обнаружить отправленный otp, получите otp в строке и реализуйте эту функцию

void _signInWithOtp() async{
  final FirebaseUser user = await _auth.signInWithPhoneNumber(
  verificationId: verificationId,
  smsCode: _otpController.text,
);
0 голосов
/ 21 октября 2018

Извините за опоздание. Я проигнорировал все электронные письма для репозитория GitHub. И, наконец, Flutter-Team добавила аутентификацию телефона. Вот ссылка на плагин firebase-auth. См. Реализованную функцию там . Я поднял этот вопрос задолго до того, как флаттер был еще в альфа-бета-версии. В то время оно еще не было реализовано. Теперь я подумала, что это может помочь и другим, так что пишу здесь. Опять извините за поздний ответ.

0 голосов
/ 11 июня 2018

У меня была такая же проблема, но я создавал приложение Ionic.

Вы можете выполнить аутентификацию телефона через Интернет. Идея такова:

  • взять номер телефона пользователя и отправить на веб-страницу.
  • создать recaptchaVerifier

    var recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
    
  • войдите в систему с номером телефона:

    firebase.auth().signInWithPhoneNumber(phoneNumber, recaptchaVerifier)
            .then(confirmationResult => {
                myVerificationId = confirmationResult.verificationId;
            })
            .catch(error => {
                console.log('error', error);
            })
    
  • отправка идентификатора подтверждения обратно в приложение флаттера через глубокую ссылку

  • Firebase отправит код смс.

  • войдите в систему любым способом, который принимает идентификатор подтверждения, и код в качестве параметров. для сети это выглядит так:

      let signinCredintial = firebase.auth.PhoneAuthProvider.credential(this.verificationId, this.code);
      firebase.auth().signInWithCredential(signinCredintial)
       .then(response => {
         // user is signed in
    
    })
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...