Comment le rendre extensible
Vous devez d'abord remarquer que toutes ces API utilisent le même mécanisme de connexion. Elles utilisent toutes OAuth pour leur authentification. Vous devez en tirer parti en commençant par une bibliothèque OAuth générale. N'utilisez pas leurs propres bibliothèques pour l'authentification, elles seront inutilisables pour d'autres fournisseurs. Si vous maîtrisez OAuth2, il est assez facile d'ajouter plus de fournisseurs.
Vous avez malheureusement besoin de deux d'entre eux, car Twitter n'a toujours pas sauté dans le train OAuth2.
OAuth a besoin de vous pour créer une interface pour la partie d'authentification. Les jetons seront échangés serveur à serveur. Créez un point d'entrée qui peut gérer toutes les communications.
Le jeton doit être stocké dans une table distincte de votre compte, car il peut s'agir de plusieurs jetons et de plusieurs profils liés. Certains services vous donnent deux jetons, l'un d'eux est un jeton d'actualisation.
Vous concevez maintenant une interface qui encapsule les autres fonctionnalités dont vous avez besoin. Je voudrais personnellement configurer un service REST distinct pour cela. De cette façon, vous pouvez facilement étendre l'authentification à d'autres endroits.
Certains services utilisent JSON pour communiquer, d'autres optent pour XML, etc. Pour l'utilisateur frontal, vous devez tous les unifier. C'est un processus assez douloureux, mais il est possible de dériver ici des bases communes.
Un autre problème ici est que tous les services n'offrent pas les mêmes fonctionnalités. Cela peut signifier que vos services ne peuvent pas fournir l'API complète comme vous l'avez spécifié. Vous devez avoir une stratégie ici, qui permet de rétrograder l'application avec élégance.
Tout cela vous permettra d'ajouter facilement de nouveaux fournisseurs tiers.
Problèmes de jeton
Les jetons sont limités dans le temps, vous avez donc besoin de quelques tâches cron, qui peuvent vérifier si le jeton est toujours utilisable, sinon vous devez le supprimer. Vous pouvez également actualiser un jeton par ce mécanisme.
Il arrive parfois qu'un utilisateur rétracte le jeton. Soyez prêt pour cela.
Stockage de données
Si vous avez cette conception, vous devez penser aux données dont vous avez besoin. Cela découle en partie de l'interface que vous venez de créer. Concevez quelques tableaux pour cela et regardez si les données sont réellement récupérables. Certains services ne vous permettent pas de récupérer beaucoup de données. Vous devez également tenir compte du fait que plus vous avez besoin de données, plus les messages de confidentialité deviennent lourds. Soyez donc modeste dans vos besoins, sinon les utilisateurs ne l'utiliseront pas.
Pour une vérification supplémentaire, vous pouvez stocker les profils dans une table distincte mais liée à vos utilisateurs. Cela vous fournira beaucoup plus d'informations sur quelqu'un.
Vérifiez également vos lois locales, pour certaines données, vous avez besoin de précautions supplémentaires.
Dernière chose
Ne faites pas la faute si vous ne créez pas de compte sur vos propres services. Si l'utilisateur est banni de Facebook, il ne pourra effectivement pas se connecter à votre service. C'est une situation que vous ne voulez pas créer. C'est souvent négligé.