firebase как обработать onAuthStateChanged () в двухэтапном процессе входа - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть приложение ioni c, которое имеет логин Gmail и аутентификацию телефона. Сценарий такой: если пользователь новый, то он перенаправляется на другую страницу, где выполняется аутентификация телефона.

Я использовал этот плагин для аутентификации телефона https://github.com/chemerisuk/cordova-plugin-firebase-authentication.

Этот плагин автоматически проверяет OTP. Нам нужно только позвонить onAuthStateChanged() для выполнения успешных операций после автоматической проверки OTP. Но теперь проблема в том, что вход в Gmail выполняется только сейчас, состояние изменилось и выполняется условие успеха onAuthStateChanged ().

Но я хочу назвать onAuthStateChanged() условие успеха только после авторизации телефона.

Как я могу это сделать?

Заранее спасибо Вот мой код

Страница входа в Gmail

this.afauth.auth.signInWithCredential(googleCredential).then(response => {

if(response.additionalUserInfo.isNewUser) {

this.router.navigate(['details'])
}
})

Страница авторизации телефона

constructor(private firebaseAuthentication : FirebaseAuthentication,public afauth: AngularFireAuth){

 this.afauth.auth.onAuthStateChanged(function(user){
   if(user) {
    console.log("otp verified")
    // update phone number
   // save in database
}

else {
    console.log("otp not valid")

}

})
}


Send(mobile_no){
    console.log(mobile_no) 
     this.mobile ="+91" + mobile_no
    console.log(this.mobile)



    this.firebaseAuthentication.verifyPhoneNumber(this.mobile, 30000).then(credential =>{
      if(credential){

        console.log(credential)
        this.verificationid = credential
        this.display_otp = true

      }
    })


   }  

   enter_otp(otp){
     console.log(otp)

     this.firebaseAuthentication.signInWithVerificationId(this.verificationid, otp).then(user =>{
      if(user) {
        console.log(user)

      }
      else {
        console.log("no user")
      }
    })

   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...