Uso del inicio de sesión con Facebook con sistemas de inicio de sesión existentes

Es posible que quieras desarrollar aplicaciones con un mecanismo personalizado de inicio de sesión, además del inicio de sesión con Facebook. Esta guía ofrece información sobre algunos de estos casos e incluye sugerencias sobre la experiencia de los usuarios con estas aplicaciones.

Información general

Puedes implementar un sistema de inicio de sesión propio en el que las personas se registren en la aplicación con un correo electrónico y una contraseña para crear una cuenta con estos datos. En este caso, suele utilizarse 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 único sistema de inicio de sesión. En este caso, las personas se registran en la aplicación con el inicio de sesión con Facebook, se crea una cuenta para ellas 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 la plataforma, 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 en ella con Facebook. Esta guía supone que la dirección de correo proporcionada al principio y la cuenta de correo principal asociada a la cuenta de Facebook son la misma.
  • Un usuario 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 ha iniciado sesión

En esta sección se explica el caso en el que una persona emplea el sistema personalizado de inicio de sesión de la aplicación para crear una cuenta. 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 la biografía lo que ha estado escuchando.

1. Cómo añadir 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 de Spotify. También puedes ofrecer una opción específica que vincule la cuenta del usuario con la de Facebook.

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

Cuando una persona inicia sesión en tu aplicación mediante tu sistema personalizado 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 Facebook que identifica la cuenta de esta persona en dicha plataforma.

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 añadir más columnas a la tabla de cuentas existente es que la primera opción te permite implementar más rápidamente otros inicios de sesión OAuth.

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

Fusión de cuentas creadas por separado con el inicio de sesión con Facebook

En esta situación, una persona ha iniciado sesión en tu aplicación con sus propias credenciales, por ejemplo, un correo electrónico y una contraseña. Más adelante, esta 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 la misma persona, una creada con su sistema propio 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.

Esta guía supone que las cuentas creadas con tu aplicación tienen una dirección de correo asociada. Sin embargo, la cuenta correspondiente a una dirección existente podría ser distinta a la de la 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 combina.
Aunque tus cuentas personalizadas no almacenen una dirección de correo, también debes permitir que el usuario especifique manualmente qué cuentas quiere combinar.

1. Modificación del proceso de inicio de sesión con Facebook para solicitar el permiso “email”

Si el sistema personalizado de inicio de sesión de la aplicación emplea 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 solicitud de permisos para ver cómo hacerlo.

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

Tras iniciar sesión correctamente con Facebook, tendrás la dirección de correo de la persona, su identificador de Facebook y su identificador de acceso. La aplicación debe buscar cuentas creadas con la misma dirección de correo. Si existe una, debes fusionar ambas y añadir la información de Facebook a la cuenta existente, como se recomienda más arriba.

En este momento, debes iniciar la sesión de la persona del modo habitual.

Si no existe en tu base de datos ninguna entrada con la misma dirección de correo, debes considerar que esta persona es un nuevo usuario.

Cómo añadir 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 emplea el inicio de sesión con Facebook junto a un sistema normal de inicio de sesión, pero también tiene una aplicación para Xbox 360 en la que solo puede utilizarse el sistema normal.

1. Comprueba que la dirección de correo 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 ha obtenido durante el inicio de sesión con Facebook) sea válida. Puedes hacerlo creando un código en tu aplicación y enviando 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 una contraseña a la persona e indicarle que puede utilizarla junto a la dirección de correo para iniciar sesión en la aplicación en el futuro. Puedes añadir 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 de la aplicación no utiliza direcciones de correo para la identificación, sino un método generado por el usuario, como un nombre de usuario, deberás solicitarlo 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 con la cuenta de Facebook de la cuenta de inicio de sesión. Solo habría que borrar la información de Facebook de la persona que lo solicite de la tabla de la base de datos de cuentas.