es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El valor de context.auth.token.email_verified en la función llamable de Firebase es falso a pesar de la verificación.

Estoy tratando de evitar que los usuarios con un correo electrónico no verificado ejecuten una función en la nube.
Mi función se ve así:

Export const myFunction = functions.https.onCall(async (data, context) => {
if (context.auth && context.auth.token.email_verified) {
//código de mi función real
} else {
if (!context.auth) {
functions.logger.log(“llamada no autenticada a myFunction”);
} else if (!context.auth.token.email_verified) {
functions.logger.log(“llamada de correo electrónico no verificado a myFunction con token”, context.auth.token);
}
}
});

Estoy llamando a esta función desde mi aplicación frontend react-native de esta manera:

const myFunction = firebase.functions().httpsCallable(“myFunction”);
myFunction(payload);

Pasé por el proceso de verificación de correo electrónico haciendo clic en el enlace que recibí, y todo parecía funcionar bien. Si inicio sesión con mi usuario actual desde mi aplicación frontend, la propiedad emailVerified es verdadera:

console.log(firebase.auth().currentUser)

Sin embargo, al llamar a la función en la nube, registra una llamada de correo electrónico no verificado a myFunction con token, y la propiedad email_verified es falsa dentro del token

¿Estoy perdiendo algo? ¿Cómo pueden ser diferentes los dos?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que ha seguido correctamente el proceso de verificación de correo electrónico, pero el token que se está pasando a la función en la nube no refleja el estado actualizado de verificación de correo electrónico.

    Es posible que el token esté siendo almacenado en caché en algún lugar, y que el estado actualizado de verificación de correo electrónico no se esté reflejando en el token. Podría intentar actualizar el token llamando a firebase.auth().currentUser.getIdToken(true) antes de llamar a la función en la nube. Esto asegurará que el token que se pasa a la función en la nube esté actualizado.

Comments are closed.