Estoy tratando de agregar MFA dentro de mi aplicación web y falta la propiedad multiFactor . Revisa el código:
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.6.2/firebase-app.js"; import { getAuth, RecaptchaVerifier, PhoneAuthProvider, signInWithEmailAndPassword } from "https://www.gstatic.com/firebasejs/9.6.2/firebase-auth.js"; const firebaseConfig = { ... }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); auth.onAuthStateChanged((user) => { const userEl = document.getElementById('user'); if (user) { userEl.innerHTML = `${user.email} logged in. ${JSON.stringify( user.multiFactor.enrolledFactors )}`; } else { userEl.innerHTML = 'signed out'; } }); window.recaptchaVerifier = new RecaptchaVerifier('recaptcha-container', { 'size': 'invisible', 'callback': (response) => { console.log('captcha solved!'); } }, auth); const enrollBtn = document.getElementById('enroll-button'); enrollBtn.onclick = () => { signInWithEmailAndPassword(auth, 'blabla@gmail.com', 'foobar').then(() => { const user = auth.currentUser; if (!user) { return alert('User not logged!'); } const phoneNumber = document.getElementById('enroll-phone').value; console.log(user); user.multiFactor.getSession().then((session) => { const phoneOpts = { phoneNumber, session, }; const phoneAuthProvider = new PhoneAuthProvider(); phoneAuthProvider.verifyPhoneNumber( phoneOpts, window.recaptchaVerifier ).then((verificationId) => { window.verificationId = verificationId; alert('sms text sent!'); }); }); }); };En el código anterior, user.multiFactor no está definido. El inicio de sesión devuelve al usuario normalmente, pero sin esta propiedad.
error en la consola: no capturado (en promesa) TypeError: no se pueden leer las propiedades de undefined (leyendo 'getSession')
El proyecto Firebase tiene MFA habilitado: ingrese la descripción de la imagen aquí
**************** ACTUALIZAR *******************
Aparentemente cambiar el código a esto funcionó:
const mfaUser = multiFactor(user); mfaUser.getSession().then((session) => {Pero ahora recibo este error cuando llamo a verificar número de teléfono:
VM21778 index.html:315 TypeError: Cannot read properties of undefined (reading 'tenantId') at _addTidIfNecessary (firebase-auth.js:1934:14) at startEnrollPhoneMfa (firebase-auth.js:6778:125) at _verifyPhoneNumber (firebase-auth.js:8500:40)Sin embargo, no estoy usando la opción Multiusuario, esto está deshabilitado en mi proyecto.
Cambiado a:
const mfaUser = multiFactor(user); mfaUser.getSession().then((session) => {y:
const phoneAuthProvider = new PhoneAuthProvider(auth);No sé si los documentos de Firebase Auth están en desuso o si estoy haciendo algo diferente. XDD