Beta privadaMailbeam está en beta privada: la API pública todavía no está abierta.Únete a la lista de espera

Mailbeam
Auth0 ActionsIntermedio20 minutosActualizado en enero de 2025

Verificación de email con Auth0

Las Actions de Auth0 son funciones serverless que se ejecutan durante la cadena de autenticación. El trigger pre-user-registration se ejecuta antes de crear un usuario nuevo en Auth0, lo que lo convierte en el sitio perfecto para verificar direcciones de email con Mailbeam.

Requisitos previos


Crea la Action

En el panel de Auth0 → Actions → Library, crea una Action nueva para el trigger Pre User Registration.

// Action de Auth0: pre-user-registration
exports.onExecutePreUserRegistration = async (event, api) => {
  const email = event.user.email;

  // Sáltala en los logins sociales (en esta fase no hay dirección de email)
  if (!email) return;

  const MAILBEAM_KEY = event.secrets.MAILBEAM_KEY;
  const MIN_SCORE = 60;

  try {
    const response = await fetch("https://api.mailbeam.dev/v1/verify", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${MAILBEAM_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ email }),
    });

    if (!response.ok) {
      // Error de la API: falla en abierto
      console.log("[Mailbeam] la API no ha devuelto 200, fallando en abierto");
      return;
    }

    const { valid, score, reason } = await response.json();

    if (!valid || score < MIN_SCORE) {
      const message = reason === "disposable_domain"
        ? "Usa una dirección de email permanente."
        : "Escribe una dirección de email válida y alcanzable.";

      api.access.deny("invalid_email", message);
    }
  } catch (err) {
    // Error de red: falla en abierto
    console.error("[Mailbeam] error de verificación:", err.message);
  }
};

Añade la clave de API como secreto

En el editor de la Action, ve a Secrets y añade:

NombreValor
MAILBEAM_KEYmb_live_xxxxxxxxxxxxxxxxxxxx

Despliega y engancha

  1. Pulsa Deploy en el editor de la Action
  2. Ve a Actions → Flows → Pre User Registration
  3. Arrastra tu Action nueva al flujo
  4. Pulsa Apply

Prueba

// Pruébala desde la pestaña de testing de Actions de Auth0 con:
{
  "user": {
    "email": "temp@mailinator.com"
  }
}
// Esperado: se llama a api.access.deny con el error "invalid_email"

Cómo funciona api.access.deny

Cuando se llama a api.access.deny, Auth0 devuelve un error al cliente:

{
  "error": "invalid_email",
  "error_description": "Usa una dirección de email permanente."
}

Tu frontend lo recibe dentro del callback de error de Auth0 y puede mostrárselo a la persona.

Buenas prácticas

  • Falla siempre en abierto (vuelve sin llamar a api.access.deny) ante errores de la API
  • Usa event.secrets para la clave de API: nunca la escribas en el código
  • Registra los errores con console.error: aparecen en los logs del tenant de Auth0

Siguientes pasos