Comment renouveler un jeton d'accès Facebook expiré?
Je travaille à partir de la cette référenceet en essayant de mettre en œuvre le protocole d'authentification OAuth pour autoriser les utilisateurs à accéder à mon site via Facebook. Cependant, Facebook la documentation est assez terrible et il est clair que dans quelques pièces.
Il est dit que l'autorisation est de trois étapes:
- Authentification de l'utilisateur (l'utilisateur est redirigé vers
https://facebook.com/dialog/oauth?client_id=...&redirect_uri=...
et attendre laredirect_uri
page pour être appelé de retour avec uncode
). Fonctionne très bien! - Application de l'autorisation (gérée par Facebook, etc). Fonctionne très bien!
- Authentification d'application (Sur le rappel de la page, prenez le
code
vous les obtenez et d'appelhttps://graph.facebook.com/oauth/access_token?client_id=...&redirect_uri=...&client_secret=...&code=...
. Le corps de la réponse comprend unaccess_token
nous avons besoin de faire des trucs)
Je comprends que le access_token
je peux appeler les Api et les. Mais, ce qui se passe quand il expire? Je pourrais en obtenir un nouveau, mais en ce moment, il sera beaucoup de requêtes HTTP tard, et je n'ai plus la code
j'ai utilisé pour obtenir en premier lieu. Dois-je stocker les code
le long du côté de la access_token
? Ou, dois-je dire à l'utilisateur de se connecter à nouveau si je reçois un nouveau code
pour obtenir une nouvelle access_token
?
Ou, suis-je raté une partie de la clé ici? Je n'ai pas besoin d'un offline_access
jeton, comme je ne l'interrogation des données en réponse aux actions de l'utilisateur .
source d'informationauteur Mike Caron
Vous devez vous connecter pour publier un commentaire.
Lorsque le
access_token
expire, l'utilisateur sera considéré comme "déconnecté" par Facebook. Votre application va passer par le même processus que pour la première fois, mais l'utilisateur ne peut pas.Si l'utilisateur n'a pas révoqué l'accès à votre application, et l'utilisateur est connecté à Facebook à l'époque, l'App processus d'Autorisation de prendre soin de lui-même, sans les actions requises par l'utilisateur, et vous recevrez une nouvelle
access_token
.Si l'utilisateur n'a pas révoqué l'accès à votre application, mais n'est pas connecté à Facebook, ils seront présentés avec Facebook se connecter sur l'Application de l'étape d'Autorisation. Ils ne seront pas invités à donner votre application l'autorisation à nouveau, comme Facebook sait que votre app id est autorisé par l'utilisateur.
Enfin, si l'utilisateur a révoqué l'accès, alors qu'ils seront présentés avec la demande initiale d'Application de l'Autorisation, et vous devez suivre le flux d'origine.
Essentiellement, vous devriez envisager la
access_token
comme volatile, et pas la peine de le ranger, mais à l'aide de laaccess_token
vous recevez dans le cadre du processus de connexion, ce qui se passe derrière les coulisses, tout le temps, et ne concernent que l'utilisateur lorsqu'il se déconnecte de Facebook ou de révoquer l'accès à votre application.Ceci est différent de celui de Twitter OAuth avec lequel vous pouvez stocker et de la réutiliser.
De le Facebook de la documentation liée à votre question:
Lorsque le
access_token
expire, vous aurez besoin d'obtenir un nouveau en passer par les mêmes étapes. L'utilisateur devra se connecter à nouveau et vous aurez à obtenir un nouveaucode
et, à son tour, une nouvelleaccess_token
.