Estoy tratando de verificar un número de teléfono con Firebase cuando me inscribo en la autenticación multifactor. Tengo una aplicación simple de HTML y JavaScript en la que quiero habilitar MFA para un usuario que ya ha iniciado sesión. Es decir, el usuario no se está inscribiendo en MFA al iniciar sesión, se está inscribiendo a través de su perfil en un momento posterior. Estoy siguiendo las instrucciones aquí:
https://cloud.google.com/identity-platform/docs/web/mfa
Puedo inicializar RecapatchVerifier con éxito (paso 3) y crear una multiFactorSession (paso 4) e inicializar PhoneInfoOptions (paso 5). Sin embargo, cuando trato de verificar el número con un PhoneAuthProvider (paso 6), arroja un "auth/error interno". Creo que esto se debe a que no estoy pasando las opciones de teléfono correctas (ver más abajo). ¿Está obsoleta la propiedad phoneNumber? No puedo encontrar ninguna otra documentación sobre esto que no requiera una sugerencia de resolución ("[s]ign the user in with his first factor, luego detecte el error auth/multi-factor-auth-required. Este error contiene un resolución, sugerencias sobre los segundos factores inscritos y una sesión subyacente que prueba que el usuario se autenticó con éxito con el primer factor”), que no puedo usar porque no hay ningún error, me estoy inscribiendo por primera vez.
function twoFactor(new_phone) { console.log("got the phone number, start enrolling in 2FA "); multiFactor(user) .getSession() .then((multiFactorSession) => { console.log('1') // Is this the right object to use when enrolling a new MFA? const phoneInfoOptions = { phoneNumber: new_phone, session: multiFactorSession } const phoneProvider = new PhoneAuthProvider(auth) return phoneProvider.verifyPhoneNumber(phoneInfoOptions, recapatchaVerifier) //error happens on the return // This promise creates an auth/internal-error }).then(verificationId => { console.log('2') const credential = PhoneAuthProvider.credential(verificationId, window.prompt('Enter your code')) const assertion = PhoneMultiFactorGenerator.assertion(credential) return multiFactor(user).enroll(assertion) }) }Error: