Objectif: Autoriser un utilisateur à s'authentifier avec Facebook dans une application iOS qui nécessite l'accès à un service Web protégé que j'exécute.
Hypothèses: Un système d'authentification (et d'enregistrement) natif est en place pour les utilisateurs qui choisissent de ne pas utiliser Facebook pour se connecter.
Détails:
- Supposons que nous voulons offrir la possibilité à un utilisateur de se connecter avec Facebook sans créer de compte / informations d'identification distinctes pour notre système.
- Parce que nous prenons en charge notre propre mécanisme d'authentification natif (nom d'utilisateur et mot de passe), nous avons nos propres ID utilisateur et émettons un jeton d'authentification qui est utilisé pour les interactions ultérieures après la validation initiale des informations d'identification.
Je suis surpris que Facebook n'ait pas de meilleures pratiques à ce sujet dans sa documentation pour les développeurs. Toute la documentation existante suppose que vous intégrez l'authentification FB dans un site Web ou une application mobile autonome sans service nécessitant une authentification.
Voici mes premières réflexions sur la façon dont cela serait conçu, mais je veux une validation pour savoir si c'est correct.
- Le client affiche la connexion Facebook iOS
- L'utilisateur de l'interface utilisateur se connecte avec les informations d'identification Facebook et obtient un jeton d'accès
- L'application iOS transmet le jeton d'accès à notre serveur
Notre serveur parle à l'API graphique FB en utilisant un jeton d'accès pour (a) valider le jeton et (b) obtenir l'ID utilisateur FB pour ce jeton d'accès.
Par exemple, notre serveur appellerait https://graph.facebook.com/me/?access_token=XYZ qui retournerait des informations de profil dans un objet JSON
En supposant qu'il est valide, notre serveur extrait l'ID utilisateur de l'objet JSON et vérifie si l'utilisateur a déjà un compte. Si c'est le cas, nous émettons notre propre ticket d'authentification au client à utiliser pour cette session. Si l'utilisateur n'a pas de compte, nous en créons un nouveau avec l'ID utilisateur Facebook, attribuons notre propre ID utilisateur unique et émettons notre ticket d'authentification.
- Le client transmet ensuite le ticket d'authentification aux interactions suivantes qui nécessitent une authentification.
Cela semble être la bonne approche pour moi, mais je ne sais pas si je manque quelque chose de incroyablement basique et que j'emprunte le mauvais chemin (compliqué).