Cómo pasar el estado mediante acciones de correo electrónico

Puedes pasar el estado a través de una URL de continuación cuando envías acciones de correo electrónico para restablecer contraseñas o verificar el correo electrónico de un usuario. Esto le proporciona al usuario la posibilidad de volver a la app una vez finalizada la acción. Además, puedes especificar si deseas manejar el vínculo de acción de correo electrónico directamente en una aplicación para dispositivos móviles, en lugar de una página web, si es que dicha aplicación está instalada.

Esto puede ser extremadamente útil en las siguientes situaciones comunes:

  • Un usuario que no accedió a su cuenta puede estar intentando obtener contenido para el que debe acceder. Sin embargo, el usuario puede haber olvidado su contraseña y podría activar el flujo de restablecimiento de contraseña. Al final del flujo, el usuario espera volver a la sección de la app a la que estaba intentando acceder.

  • Una aplicación podría ofrecer acceso solo a cuentas verificadas. Por ejemplo, es posible que se exija que el usuario verifique su correo electrónico antes de suscribirse a un boletín informativo. El usuario pasaría por el flujo de verificación de correo electrónico y esperaría volver a la app para completar la suscripción.

  • En otros casos, es posible que el usuario haya iniciado el flujo desde su dispositivo móvil y espere volver a la app y no al navegador.

Tener la capacidad de pasar el estado a través de una URL de continuación es una característica importante que Firebase Auth proporciona y que puede mejorar significativamente la experiencia del usuario.

Pasa el estado y la URL de continuación en acciones de correo electrónico

Para pasar una URL de continuación de forma segura, el dominio de la URL debe estar incluido en la lista blanca de Firebase console. Para ello, se debe agregar el dominio a la lista de dominios de redireccionamiento de OAuth en la sección Authentication, si no se hizo aún.

Se debe proporcionar una instancia de firebase.auth.ActionCodeSettings cuando se envíe un correo electrónico de restablecimiento de contraseña o un correo electrónico de verificación. Esta interfaz toma los siguientes parámetros:

Parámetro Tipo Descripción
url string

Establece el vínculo (estado/URL de continuación), que tiene significados diferentes según el contexto:

  • Cuando el vínculo se maneja en los widgets de acción web, este es el vínculo directo en el parámetro de consulta continueUrl.
  • Cuando el vínculo se maneja directamente en la app, este es el parámetro de consulta continueUrl en el vínculo directo de Dynamic Links.
iOS ({bundleId: string}|no definido) Establece el ID de paquete de iOS. Este parámetro intentará abrir el vínculo en una app para iOS, si está instalada. La app para iOS debe estar registrada en la consola.
android ({packageName: string, installApp: booleano|no definido, minimumVersion: string|no definido}|no definido) Establece el nombre del paquete de Android. Este parámetro intentará abrir el vínculo en una app para Android, si está instalada. Si se pasa installApp, especifica si se debe instalar la app para Android en caso de ser compatible con el dispositivo y de que aún no esté instalada. Si se proporciona este campo sin un packageName, se genera un error que indica que se debe proporcionar el packageName con este campo. Si se especifica minimumVersion y hay una versión anterior de la app instalada, se dirigirá al usuario a Play Store para que actualice la app. La app para Android debe estar registrada en la consola.
handleCodeInApp (booleano|no definido) Indica si el vínculo de acción de correo electrónico debe abrirse primero en una app para dispositivos móviles o en un vínculo web. El valor predeterminado es falso. Cuando se configura como verdadero, el vínculo del código de acción se enviará como vínculo universal o vínculo de app para Android y se abrirá si la app está instalada. Si el valor es falso, el código se enviará primero al widget web y luego se redireccionará a la app, si está instalada.

El siguiente ejemplo muestra cómo enviar un vínculo de verificación de correo electrónico que se abrirá primero en una app para dispositivos móviles como un vínculo de Firebase Dynamic Links (app para iOS com.example.ios o app para Android com.example.android, que se instalará si aún no está en el dispositivo y la versión mínima es 12). El vínculo directo incluirá la carga útil https://www.example.com/?email=user@example.com de la URL de continuación.

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Auth utiliza Firebase Dynamic Links cuando envía un vínculo que debe abrirse en una aplicación para dispositivos móviles. Para poder usar esta función, se debe configurar Dynamic Links en Firebase console.

  1. Habilita Firebase Dynamic Links:

    1. En Firebase console, abre la sección Dynamic Links.
    2. Si aún no aceptas los términos de Dynamic Links, selecciona Comenzar. Vuelve al panel principal de Dynamic Links.
    3. Anota tu Dominio de Dynamic Links. Debe tener el siguiente aspecto: abc123.app.goo.gl. Lo necesitarás cuando configures la app de Android o iOS para interceptar el vínculo entrante.
  2. Configuración de aplicaciones para Android:

    1. Si planeas manejar estos vínculos desde tu aplicación para Android, es necesario especificar el nombre del paquete de Android en la configuración del proyecto de Firebase console. Además, es necesario proporcionar el SHA-1 y el SHA-256 del certificado de aplicación.
    2. También deberás configurar el filtro de intents para el vínculo directo en el archivo AndroidManifest.xml.
    3. Para obtener más información al respecto, consulta las instrucciones para recibir vínculos de Dynamic Links para Android.
  3. Configuración de aplicaciones para iOS:

    1. Si planeas manejar estos vínculos desde tu aplicación para iOS, es necesario especificar el ID de paquete de iOS en la configuración del proyecto de Firebase console. Además, es necesario especificar el ID de App Store y el ID del equipo de programadores de Apple.
    2. También tendrás que configurar el dominio del vínculo universal FDL como un dominio asociado en las capacidades de tu aplicación.
    3. Si planeas distribuir la aplicación para la versión 8 de iOS o versiones previas, deberás configurar el ID del paquete de iOS como un esquema personalizado para las URL entrantes.
    4. Para obtener más información al respecto, consulta las instrucciones para recibir Dynamic Links en iOS.

Manejo de acciones de correo electrónico en una aplicación web

Puedes especificar si deseas manejar el vínculo de código de acción desde una aplicación web primero y después redireccionar a otra página web o a una aplicación para dispositivos móviles cuando se finalice el proceso, siempre y cuando la aplicación para dispositivos móviles esté disponible. Para ello, se debe configurar handleCodeInApp como false en el objeto firebase.auth.ActionCodeSettings. Si bien no es obligatorio ingresar un ID de paquete de iOS o un nombre de paquete de Android, proporcionarlos permitirá que el usuario se redireccione de vuelta a la app especificada cuando termine de procesarse el código de acción de correo electrónico.

La URL web que se usa aquí es la que se configuró en la sección de plantillas de acción de correo electrónico. Se aprovisiona una opción predeterminada para todos los proyectos. Consulta cómo personalizar los controladores de correo electrónico para obtener más información sobre el tema.

En este caso, el vínculo que se encuentra dentro del parámetro de consulta continueUrl será un vínculo FDL cuya carga útil es la URL que se especifica en el objeto ActionCodeSettings. Si bien puedes interceptar el vínculo entrante y manejarlo desde tu app sin ninguna dependencia adicional, te recomendamos utilizar la biblioteca cliente FDL para analizar el vínculo directo.

Manejo de acciones de correo electrónico en una aplicación para dispositivos móviles

Puedes especificar si deseas manejar el vínculo de código de acción primero desde tu aplicación para dispositivos móviles, siempre y cuando esté instalada. En el caso de las aplicaciones para Android, también puedes usar android.installApp para especificar que la aplicación debe instalarse si es compatible con el dispositivo y aún no está instalada. Si se hace clic en el vínculo desde un dispositivo móvil que no es compatible con la aplicación, se abrirá en una página web. Para ello, se debe configurar handleCodeInApp como true en el objeto firebase.auth.ActionCodeSettings. También deberás especificar el nombre del paquete de Android o el ID del paquete de iOS de la aplicación para dispositivos móviles.

La URL web de resguardo que se usa aquí, cuando no hay una app para dispositivos móviles disponible, es la configurada en la sección de plantillas de acciones de correo electrónico. Se aprovisiona una opción predeterminada para todos los proyectos. Consulta cómo personalizar los controladores de correo electrónico para obtener más información sobre el tema.

En este caso, el vínculo de la app para dispositivos móviles enviado al usuario será un vínculo FDL cuya carga útil es la URL del código de acción configurada en la consola, con los parámetros de consulta oobCode, mode, apiKey y continueUrl. Esta última será la URL original especificada en el objeto ActionCodeSettings. Si bien puedes interceptar el vínculo entrante y manejarlo desde tu app sin ninguna dependencia adicional, te recomendamos utilizar la biblioteca cliente FDL para analizar el vínculo directo. El código de acción se puede aplicar directamente desde una aplicación para dispositivos móviles de manera similar a la forma en que se controla desde el flujo web descrito en la sección Cómo crear controladores de acciones de correo electrónico personalizados.

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.