Utilisation de Facebook Login avec des systèmes de connexion existants

Vous pouvez développer vos apps à la fois avec un mécanisme de connexion personnalisé et avec Facebook Login. Ce guide aborde certains de ces scénarios et vous donne des astuces pour gérer l’expérience des personnes qui utilisent ces apps.

Présentation

Vous pouvez implémenter votre propre système de connexion et permettre à un utilisateur de s’inscrire à l’app en saisissant son adresse e-mail et son mot de passe, ce qui entraîne la création de son compte. En règle générale, l’utilisateur reçoit un e-mail de vérification dans lequel il doit cliquer pour confirmer son identité.

L’autre possibilité consiste à utiliser uniquement Facebook Login comme processus de connexion. Dans ce cas, l’utilisateur s’inscrit à l’app en utilisant Facebook Login, ce qui entraîne la création de son compte, et Facebook prend en charge l’étape d’authentification.

Outre ces scénarios, il se peut que votre app doive gérer des situations plus complexes. En voici quelques-unes :

  • Un utilisateur s’inscrit à votre app à l’aide de son adresse e-mail et de son mot de passe, mais décide plus tard d’utiliser Facebook Login pour récupérer des données de son compte Facebook, publier du contenu dans son journal ou tout simplement se connecter à l’app.
  • Un utilisateur s’inscrit à l’app à l’aide de son adresse e-mail et de son mot de passe, mais décide plus tard de se connecter séparément avec Facebook. Ce guide part du principe que la première adresse e-mail fournie et l’adresse e-mail principale associée au compte Facebook de l’utilisateur sont les mêmes.
  • Un utilisateur s’inscrit à l’app à l’aide de Facebook Login, mais décide plus tard de se connecter à ce compte à l’aide de son adresse e-mail et de son mot de passe.

Ce guide vise à fournir des instructions qui, selon nous, sont les plus appropriées pour gérer ces situations.

Associer Facebook Login à un compte déjà connecté

Cette section aborde le cas de figure où un utilisateur utilise le système de connexion personnalisé d’une app pour créer un compte. Plus tard, tout en étant connecté à son nouveau compte, l’utilisateur décide de l’associer à son compte Facebook. Par exemple, un utilisateur peut choisir de s’inscrire à Spotify avec son adresse e-mail et son mot de passe, et d’associer plus tard ce compte à son compte Facebook par l’intermédiaire de Facebook Login, notamment s’il souhaite publier les chansons qu’il écoute dans son journal.

1. Ajouter un processus Facebook Login à votre app

Consultez nos guides sur l’utilisation d’un processus Facebook Login dans votre app pour terminer cette étape. Dans l’exemple de Spotify, vous commencez le processus Facebook Login au moment où l’utilisateur indique vouloir publier son activité d’écoute. Vous pouvez également ajouter une option explicite l’invitant à associer son compte Spotify à son compte Facebook.

2. Gérer la fusion des informations des comptes

Maintenant que l’utilisateur s’est connecté à votre app grâce à votre propre système de connexion et a terminé le processus Facebook Login, votre app doit procéder à deux fusions importantes :

  • le compte créé par l’app ;
  • les informations issues de Facebook qui identifient le compte Facebook de cette personne.

Dans la majorité des apps, le compte d’origine est normalement stocké dans une table de base de données. La méthode la plus simple consiste donc à associer les informations du compte Facebook à ce compte au sein même de la base de données.

En règle générale, il vaut mieux créer une nouvelle table et y stocker les informations du compte Facebook de l’utilisateur. Créer une table distincte plutôt que d’ajouter des colonnes dans la table de votre compte existant vous permet de prendre plus rapidement en charge d’autres identifiants de comptes OAuth au fil du temps.

À l’avenir, si ce même utilisateur choisit de se connecter à votre app, vous pouvez faire correspondre les informations stockées dans la base de données pour l’authentifier avec l’une ou l’autre de ces méthodes, en toute fluidité.

Fusionner de nouveaux comptes distincts avec Facebook Login

Dans ce cas de figure, un utilisateur s’est connecté à votre app avec ses propres identifiants (par exemple, son adresse e-mail et son mot de passe). Plus tard, l’utilisateur alors déconnecté choisit de s’inscrire à votre app à l’aide de Facebook Login. Votre app possède désormais deux comptes pour un même utilisateur : un compte créé par l’intermédiaire du système de connexion de l’app et un autre créé à l’aide du processus Facebook Login. Afin de proposer à cet utilisateur la meilleure expérience possible, votre app doit essayer de fusionner ces comptes.

Ce guide part du principe qu’une adresse e-mail est associée à chaque compte créé par votre app. Toutefois, il se peut que l’adresse e-mail que l’utilisateur a utilisée pour créer son compte existant diffère de celle qu’il a associée à son compte Facebook. Dans ce cas, vous devez lui proposer une option explicite de « fusion des comptes » quelque part au sein de votre app, et lui permettre ensuite d’indiquer manuellement les deux comptes distincts qu’il souhaite fusionner.
En outre, si vos propres comptes personnalisés ne comportent pas d’adresse e-mail, vous devez là aussi permettre à l’utilisateur d’indiquer manuellement les comptes qu’il souhaite fusionner.

1. Modifier votre processus Facebook Login pour demander l’autorisation d’utiliser l’adresse e-mail

Si le système de connexion personnalisé de votre app utilise une adresse e-mail pour identifier chaque compte de façon unique, vous devez également demander l’adresse e-mail de l’utilisateur (à l’aide de l’autorisation email) dans le cadre du processus Facebook Login. Consultez notre guide sur les demandes d’autorisations pour connaître la marche à suivre.

2. Fusionner le compte Facebook Login et le compte de l’app

Une fois que l’utilisateur s’est connecté avec Facebook, vous possédez son adresse e-mail, son ID Facebook et son token d’accès. Votre app doit ensuite rechercher un compte existant qui a été créé avec cette même adresse e-mail. Si un tel compte existe, vous devez fusionner les deux comptes et ajouter les informations issues de Facebook au compte existant, tel que recommandé plus haut.

À ce stade, vous devez connecter l’utilisateur comme vous le feriez en temps normal.

Si votre base de données ne contient aucune entrée avec cette adresse e-mail, vous devez considérer l’utilisateur comme nouveau.

Ajouter manuellement des informations de connexion à un nouveau compte Facebook Login

Ce cas de figure survient lorsqu’un utilisateur crée son compte dans votre app avec Facebook Login, mais décide plus tard de se connecter également à ce compte avec un identifiant et un mot de passe uniques. Par exemple, Netflix propose une app web qui utilise Facebook Login en plus d’un système de connexion traditionnel, ainsi qu’une app Xbox 360 qui propose uniquement le système de connexion traditionnel aux utilisateurs.

1. S’assurer que l’adresse e-mail associée à Facebook Login a été vérifiée

Si vous utilisez une adresse e-mail comme identifiant unique pour identifier chaque compte, votre app doit vérifier que l’adresse e-mail associée au compte Facebook de l’utilisateur (et obtenue au cours de l’authentification avec Facebook Login) est valable. Pour ce faire, vous devez créer un code dans votre app, afin d’envoyer un e-mail de vérification à l’adresse obtenue lors de l’authentification avec Facebook Login (dans tous les cas, vous devrez certainement intégrer cette méthode à votre système de connexion traditionnel).

2. Demander à l’utilisateur de fournir un nouveau mot de passe (et d’autres identifiants)

Une fois l’adresse e-mail vérifiée, vous devez demander à l’utilisateur de fournir un mot de passe et lui préciser qu’il peut désormais l’utiliser avec son adresse e-mail pour se connecter à votre app. Dès que le mot de passe a été fourni, vous pouvez l’ajouter à l’endroit où vous stockez les informations sur les comptes dans la base de données.

Si le système de connexion de votre app n’utilise pas une adresse e-mail comme méthode d’identification, mais plutôt une information générée par l’utilisateur, comme un nom d’utilisateur, vous devez également demander à l’utilisateur de vous fournir cette information en plus d’un mot de passe.

Les utilisateurs peuvent également attendre de votre app qu’elle permette d’annuler l’association du compte Facebook et du compte de connexion. Dans ce cas, il suffit de retirer de la table de base de données de votre compte les informations Facebook d’un utilisateur en particulier.