Je développe une application iPhone, basée sur la communication avec le serveur, et je souhaite utiliser les mécanismes d'authentification Facebook.
Fondamentalement, je pense que cela devrait fonctionner comme ceci:
- Dans mon application iPhone, l'utilisateur se connecte à Facebook, en utilisant son email et son mot de passe.
- L'utilisateur autorise l'accès à ses données pour l'application Facebook associée.
- Mon application iPhone reçoit un jeton d'accès après une connexion réussie.
- Lors de la communication avec mon serveur, mon application iPhone doit utiliser le jeton d'accès Facebook reçu (par exemple: dans les requêtes).
- Lorsque mon serveur reçoit une requête de l'application iPhone, avec un jeton d'accès, il doit demander à Facebook que ce jeton est valide (et pour qui), et si oui, le serveur doit supposer que l'utilisateur est authentifié avec Facebook.
Ma question est la suivante: comment le serveur doit-il demander à Facebook si le jeton d'accès donné est valide? Je pense que je devrais en quelque sorte vérifier si le jeton est valide pour mon application Facebook.
J'ai essayé de nombreuses requêtes Facebook pour grapher l'API, que j'ai trouvées, mais rien n'a fonctionné comme prévu. Pouvez-vous me donner un exemple?
iphone
facebook
authentication
Marcin
la source
la source
Réponses:
Voici un processus en deux étapes que vous pouvez utiliser pour valider qu'un jeton d'accès utilisateur appartient à votre application:
1) Générer un jeton d'accès aux applications
( https://developers.facebook.com/docs/howtos/login/login-as-app/ )
2) Déboguer le jeton d'accès utilisateur
( https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/ )
Où INPUT_TOKEN est le jeton d'accès utilisateur que vous souhaitez vérifier, et ACCESS_TOKEN est le jeton de votre application que vous avez obtenu à l'étape 1.
Le point de terminaison de débogage vide essentiellement toutes les informations sur un jeton, donc il répondra avec quelque chose comme ceci:
Si ce jeton ne provient pas de "votre application", il renverra une réponse d'erreur.
la source
Je suppose que vous avez déjà le jeton d'accès en main. Dans un tel cas, le moyen le plus simple de valider un jeton d'accès est d'émettre la requête suivante
Remplacez ici @accesstoken par le jeton d'accès dont vous disposez. Je décomposerai l'url et expliquerai chacun.
Nous émettons ici une demande d'API graphique qui renverra l'ID utilisateur Facebook du propriétaire du jeton d'accès sous forme de chaîne JSON. Le mot-clé «moi» représente l'utilisateur actuellement connecté ou le propriétaire du jeton d'accès. Pour cette demande, le jeton d'accès est un paramètre obligatoire.
Si le jeton d'accès fourni n'est pas valide ou a expiré, Facebook renverra simplement un message d'erreur quelconque.
Pour un jeton d'accès valide, le résultat ressemblera en quelque sorte à ceci
la source
Une autre solution consisterait à utiliser
https://graph.facebook.com/app/?access_token=[user_access_token]
comme décrit par Obtenir l'ID d'application à partir du jeton d'accès utilisateur (ou vérifier l'application source pour un jeton) .Cela semble être une fonctionnalité non documentée, mais renvoie JSON contenant l'ID de l'application pour laquelle le jeton a été généré. Si le jeton n'était pas pour votre application, il renvoie un 400.
la source
Dans la dernière version de facebook (2.2), vous pouvez le faire de cette façon:
Exemple de sortie:
la source
Vous pouvez télécharger le SDK Facebook pour PHP depuis GitHub .
la source
Si un utilisateur vous a transmis un UID Facebook qu'il prétend être le sien et que vous souhaitez vérifier s'il est légitime, il s'agit d'une fonction Python qui le vérifiera par rapport à son jeton d'accès (une implémentation de la réponse de Robin Jome):
la source
C'est la seule méthode sécurisée pour vérifier le jeton utilisateur en utilisant une seule demande:
Notez qu'un signe "|" dans l'URL ci-dessus n'est pas utilisé comme OU mais comme séparateur et doit être là après avoir rempli les autres champs.
La réponse sera JSON ressemblant à ça:
Référence: https://developers.facebook.com/docs/facebook-login/access-tokens/#apptokens (la méthode ci-dessus est mentionnée au bas de cette section)
la source
En plus d'un jeton d'accès, Facebook envoie également un paramètre "expires_in", qui est une valeur de décalage. Utilisez-le pour calculer le moment où le jeton d'accès expirera en tant que NSDate. Ensuite, lorsque vous avez besoin de faire une demande, comparez la date actuelle avec la date d'expiration.
Essayez également d'inspecter les codes d'état et les chaînes de réponse que Facebook renvoie.
la source