Tengo una aplicación Vue donde se implementa firebase como BaaS . Para verificar cuándo se autentica al usuario, estoy usando el método onAuthStateChanged que se proporciona de forma predeterminada desde firebase, pero me está dando un problema.
En detalle, estoy verificando si un usuario nunca inició sesión en la aplicación usando un proveedor de autenticación y se registró en la base de datos RTDB al compilar el formulario, al verificar authResult.additionalUserInfo.isNewUser que se proporciona desde la devolución de llamada de Firebase UI, pero esto tiene un inconveniente que necesito arreglar.
De hecho, no puedo mostrar el formulario de registro después de que se llame a la devolución de llamada exitosa también si la condición isNewUser es verdadera porque cuando se llama a onAuthStateChanged y el user no es nulo, ignorará mi declaración if() . Estoy usando este método para mostrar la interfaz de usuario de firebase y administrar esta condición:
showFirebaseLoginUI() { fbui.start(this.$refs.firebaseWidget, { signInOptions: [ firebase.auth.EmailAuthProvider.PROVIDER_ID, firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.FacebookAuthProvider.PROVIDER_ID, ], callbacks: { signInSuccessWithAuthResult: (authResult) => { console.log(authResult) if( authResult.additionalUserInfo.isNewUser ){ console.log('New user') this.showWizard = true } else { this.$router.push({ name: 'Home' }) } } }, signInFlow: 'popup' }); }Se mostrará el registro de la consola, pero no el asistente y el usuario será redirigido directamente a la página de inicio.
created() { onAuthStateChanged(getAuth(app), (user) => { if( user && !this.showWizard ){ this.$router.push({ name: 'Home' }) } }) }Dado que necesito agregar al usuario a la base de datos después de que agregue información y cuando un usuario ya haya iniciado sesión, evite que se muestre la página de inicio de sesión, ¿cómo puedo solucionar esto?