Usar el inicio de sesión con Facebook con sistemas de inicio de sesión existentes

Tal vez prefieras crear aplicaciones con un mecanismo personalizado de inicio de sesión, además del inicio de sesión con Facebook. En esta guía se ofrece información sobre algunos de estos escenarios y sugerencias sobre la experiencia de las personas con estas aplicaciones.

Información general

Puedes implementar un sistema de inicio de sesión propio en el que el usuario se registre en la aplicación con un correo electrónico y una contraseña, y se cree una cuenta para él. En este caso, se suele utilizar un paso de verificación de correo electrónico para autenticar la identidad.

También puedes optar por el inicio de sesión con Facebook como sistema de inicio de sesión único. En este caso, el usuario se registra en la aplicación usando el inicio de sesión con Facebook, se crea una cuenta para él y Facebook se encarga del paso de autenticación.

En los demás casos, la aplicación deberá resolver situaciones más complejas:

  • Una persona se registra en la aplicación con su correo electrónico y su contraseña, pero más adelante quiere utilizar el inicio de sesión con Facebook para obtener datos de su cuenta de Facebook, para publicar en su biografía o simplemente para iniciar así sesión en el futuro.
  • Una persona se registra en la aplicación con su correo electrónico y contraseña, pero más adelante decide iniciar sesión con Facebook de forma independiente. En esta guía se asume que la dirección de correo proporcionada al principio y la cuenta de correo principal asociada a la cuenta de Facebook son la misma.
  • Una persona se registra en la aplicación con el inicio de sesión con Facebook y más adelante quiere iniciar sesión con una cuenta de correo y una contraseña.

En esta guía proporcionamos información sobre los métodos más adecuados para resolver estas situaciones.

Asociar el inicio de sesión con Facebook a una cuenta con la que ya se inició sesión

Aquí describiremos qué hacer cuando alguien usa un sistema de inicio de sesión personalizado de la aplicación para crear una cuenta y, más adelante, con la sesión aún iniciada, quiere asociar su cuenta de Facebook. Por ejemplo, una persona puede registrarse en Spotify con una dirección de correo y una contraseña, y más tarde puede asociar esta cuenta a la de Facebook mediante el inicio de sesión con Facebook, tal vez para publicar en su biografía lo que estuvo escuchando.

1. Cómo agregar a la aplicación un proceso de inicio de sesión con Facebook

Para completar este paso, lee nuestras guías sobre el uso de un proceso de inicio de sesión con Facebook en tu aplicación. En el ejemplo de Spotify, el proceso de inicio de sesión con Facebook comienza cuando la persona indica que quiere publicar su actividad en Spotify. También puedes ofrecer una opción específica que vincule la cuenta del usuario con la de Facebook.

2. Cómo manejar la fusión de la información de diferentes cuentas

Cuando una persona inicia sesión en tu aplicación mediante tu sistema de inicio de sesión y luego completa el proceso de inicio de sesión con Facebook, la aplicación debe entonces fusionar ambos métodos:

  • La cuenta creada por la aplicación
  • La información de la cuenta de Facebook identificada como de esa persona

En la mayoría de las aplicaciones, la cuenta original se habrá almacenado en una tabla de base de datos, de modo que el enfoque más sencillo es asociar la información de la cuenta de Facebook a la cuenta en la base de datos.

En general, es mejor crear una nueva tabla para almacenar la información de la cuenta de Facebook de la persona. La ventaja de mantener una tabla separada en lugar de agregar más columnas a la tabla de cuentas existente es que la primera opción te permite admitir más rápidamente otros inicios de sesión OAuth en el transcurso del tiempo.

Si, en el futuro, la misma persona inicia sesión en la aplicación, puedes usar la información almacenada en la base de datos para realizar el inicio de sesión con cualquiera de los métodos sin ningún problema.

Fusionar cuentas creadas de forma independiente con el inicio de sesión con Facebook

En esta situación, una persona inició sesión en tu aplicación con sus propias credenciales, por ejemplo, un correo electrónico y una contraseña. Más adelante, la persona cierra sesión y decide entrar de nuevo, esta vez con el inicio de sesión con Facebook. Ahora, la aplicación dispone de dos cuentas para el mismo usuario, una creada con su sistema de inicio de sesión y la otra creada por el proceso de inicio de sesión con Facebook. Para proporcionar la mejor experiencia, la aplicación debería intentar combinar ambas cuentas en una.

En esta guía se asume que las cuentas creadas con tu aplicación tienen una dirección de correo asociada. Sin embargo, es posible que para crear su cuenta la persona haya usado un correo electrónico distinto al asociado a su cuenta de Facebook. En este caso, se debería ofrecer en algún punto de la aplicación una opción explícita de "fusión de cuentas" que permita a la persona especificar manualmente cuáles quiere combinar.
No obstante, si tus cuentas personalizadas no almacenan una dirección de correo, también debes permitir que la persona especifique qué cuentas quiere fusionar.

1. Modifica el proceso de inicio de sesión con Facebook para solicitar el permiso "email"

Si el sistema de inicio de sesión personalizado de la aplicación usa direcciones de correo para identificar de forma exclusiva cada cuenta, también debes solicitar la dirección de correo (mediante el permiso email) durante el proceso de inicio de sesión con Facebook. Lee nuestra guía sobre cómo solicitar permisos para ver cómo hacerlo.

2. Fusiona la cuenta de inicio de sesión con Facebook y la cuenta de la aplicación

Después de un inicio de sesión con Facebook correcto, tendrás la dirección de correo electrónico de la persona, su identificador de Facebook y su token de acceso. La aplicación debe comprobar si tiene cuentas creadas previamente con la misma dirección de correo electrónico. Si encuentra una, debe fusionar ambas y agregar la información de Facebook a la cuenta existente, como se recomienda más arriba.

En este momento, se debe iniciar la sesión de la persona del modo normal.

Si no existe en tu base de datos ninguna entrada con la misma dirección de correo, debes considerarla como un nuevo usuario.

Cómo agregar información de inicio de sesión manual a una cuenta de inicio de sesión con Facebook existente

Esta situación se produce cuando alguien crea una cuenta en tu aplicación mediante el inicio de sesión con Facebook, pero más tarde quiere iniciar sesión también con un nombre de usuario y una contraseña exclusivos. Por ejemplo, Netflix dispone de una aplicación web que usa el inicio de sesión con Facebook junto a un sistema de inicio de sesión normal, pero también tiene una aplicación para Xbox 360 en la que solo se puede utilizar el sistema normal.

1. Comprueba que la dirección de correo electrónico de inicio de sesión con Facebook esté verificada

Si utilizas una dirección de correo como credencial exclusiva para identificar cada cuenta, la aplicación debe comprobar que la dirección asociada a la cuenta de Facebook (y que obtuvo durante el inicio de sesión con Facebook) es válida. Para hacer esto, puedes crear un código en tu aplicación y enviar un mensaje de verificación a la dirección de correo obtenida tras el inicio de sesión con Facebook (en cualquier caso, es probable que también necesites este paso para el sistema de inicio de sesión normal).

2. Pide al usuario que proporcione una nueva contraseña (y otras credenciales)

Una vez verificada la dirección de correo, puedes solicitar al usuario una contraseña e indicarle que puede utilizarla junto con la dirección de correo para iniciar sesión en el futuro. Puedes agregar esta contraseña a la misma parte de la base de datos en la que almacenas la información de las cuentas.

Si el sistema de inicio de sesión no utiliza una dirección de correo para la identificación, sino un método generado por el usuario, como un nombre de usuario, deberás solicitarla al mismo tiempo que la contraseña.

También es posible que las personas supongan que la aplicación ofrece la opción de eliminar la asociación de la cuenta de Facebook y la cuenta de inicio de sesión. Solo habría que borrar la información de Facebook del usuario que lo solicite de la tabla de la base de datos de cuentas.