Je joue avec l'autorisation Oauth 2.0 dans Facebook et je me demandais si les jetons d'accès Facebook expiraient. Si tel est le cas, existe-t-il un moyen de demander un jeton d'accès de longue durée?
Je joue avec l'autorisation Oauth 2.0 dans Facebook et je me demandais si les jetons d'accès Facebook expiraient. Si tel est le cas, existe-t-il un moyen de demander un jeton d'accès de longue durée?
Réponses:
Après avoir fouillé un peu, j'ai trouvé ça. Cela semble être la réponse:
Mis à jour (11 / avril / 2018)
Annonce de changement Facebook (10/04/2018)
Page d'expiration des jetons Facebook mise à jour (10/04/2018)
offline_access: permet à votre application d'effectuer des requêtes autorisées au nom de l'utilisateur à tout moment. Par défaut, la plupart des jetons d'accès expirent après une courte période de temps pour garantir que les applications ne font des demandes au nom de l'utilisateur que lorsqu'elles utilisent activement l'application. Cette autorisation rend le jeton d'accès renvoyé par notre point de terminaison OAuth de longue durée.
C'est une valeur d'autorisation demandée.
http://developers.facebook.com/docs/authentication/permissions
METTRE À JOUR
L'autorisation offline_access a été supprimée il y a quelque temps.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Essayez ceci, peut-être que cela vous aidera pleinement
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Pour obtenir un jeton d'accès à vie, vous devez utiliser scope=offline_access
Signification de scope=offline_access
est que: -
Permet à votre application d'exécuter à tout moment des requêtes autorisées au nom de l'utilisateur. Par défaut, la plupart des jetons d'accès expirent après une courte période de temps pour garantir que les applications ne font des demandes au nom de l'utilisateur que lorsqu'elles utilisent activement l'application. Cette autorisation rend le jeton d'accès renvoyé par notre point de terminaison OAuth de longue durée.
Mais selon la future mise à jour de Facebook, la fonctionnalité offline_acees sera obsolète pour toujours à partir du 3 octobre 2012. et l'utilisateur recevra un jeton d'accès de 60 jours et avant l'expiration du jeton d'accès, Facebook en informera ou vous pourrez obtenir votre personnalisé fonctionnalité de notification récupérant la valeur d'expiration de l'API Facebook.
Notez que Facebook désapprouve désormais l'autorisation offline_access au profit des jetons pour lesquels vous pouvez demander une "mise à niveau" à l'expiration. Je viens de m'occuper de cela moi-même, donc je n'ai pas grand-chose à dire, mais ce document peut vous aider:
https://developers.facebook.com/docs/offline-access-deprecation/
Je suis venu ici avec la même question que l'OP, mais les réponses suggérant l'utilisation de offline_access soulèvent des drapeaux rouges pour moi.
Sur le plan de la sécurité, accéder hors ligne au compte Facebook d'un utilisateur est qualitativement différent et bien plus puissant que la simple utilisation de Facebook pour l'authentification unique, et ne doit pas être utilisé à la légère (sauf si vous en avez vraiment besoin). Lorsqu'un utilisateur accorde cette autorisation, «l'application» peut examiner le compte de l'utilisateur de n'importe où et à tout moment. J'ai mis "l'application" entre guillemets car c'est en fait n'importe quel outil qui a les informations d'identification - vous pouvez créer un script pour toute une suite d'outils qui n'ont rien à voir avec le serveur Web qui peut accéder aux informations que l'utilisateur a accepté de partager avec ceux-ci identifiants.
Je n'utiliserais pas cette fonctionnalité pour travailler autour d'une courte durée de vie de jeton; ce n'est pas son objectif. En effet, la durée de vie des jetons est elle-même une fonctionnalité de sécurité. Je suis toujours à la recherche de détails sur l'utilisation correcte de ces jetons (Puis-je les conserver? Comment les sécuriser / dois-je les sécuriser? Est-ce que Facebook intègre le «jeton d'actualisation» OAuth 2.0 dans le jeton principal? Sinon, où se trouve-t-il et / ou comment actualiser?), mais je suis presque sûr que offline_access n'est pas la bonne façon.
Oui, ils expirent. Il y a une valeur «expires» qui est transmise avec le «access_token», et d'après ce que je peux dire, c'est environ 2 heures. J'ai cherché, mais je ne vois pas de moyen de demander un délai d'expiration plus long.
puisque j'ai eu le même problème - voir l'excellent article sur ce sujet de ben biddington, qui a clarifié tous ces problèmes avec le mauvais jeton et le bon type à envoyer pour les demandes.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Vous pouvez toujours actualiser le jeton d'accès de l'utilisateur chaque fois que l'utilisateur se connecte à votre site via Facebook. L'accès hors ligne ne peut pas garantir que vous obtenez un jeton d'accès à vie, le jeton d'accès change chaque fois que l'utilisateur révoque votre accès à l'application ou que l'utilisateur change son mot de passe.
Cité de facebook http://developers.facebook.com/docs/authentication/
Remarque: si l'application n'a pas demandé l'autorisation offline_access, le jeton d'accès est limité dans le temps. Le jeton d'accès limité dans le temps est également invalidé lorsque l'utilisateur se déconnecte de Facebook. Si l'application a obtenu l'autorisation offline_access de l'utilisateur, le jeton d'accès n'a pas d'expiration. Cependant, il est invalidé chaque fois que l'utilisateur change son mot de passe.
Supposons que vous stockiez l'uid facebook et le jeton d'accès de l'utilisateur dans une table des utilisateurs de votre base de données, chaque fois que l'utilisateur clique sur le bouton «Se connecter avec Facebook», vous vérifiez l'état de connexion à l'aide de l'API Javascript de Facebook, puis examinez l'état de la connexion à partir de la réponse , si l'utilisateur s'est connecté à votre site, vous pouvez alors mettre à jour le jeton d'accès dans le tableau.
connectez-vous à votre compte facebook et modifiez les paramètres de votre application (compte -> paramètre d'application -> autorisation supplémentaire de l'application qui utilise votre compte) décochez la permission (Accéder à mes données lorsque je n'utilise pas l'application (offline_access)). Ensuite, face réservera un nouveau jeton lorsque vous vous connecterez à l'application.
Le jeton Facebook de base expire environ dans une heure. Mais vous pouvez utiliser un jeton `` échange '' pour obtenir un jeton de longue durée https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
vérifiez les éléments suivants lorsque vous interagissez avec l'API graphique de Facebook.
1) L'URL de connexion à l'application doit être la base de votre URL de connexion "redirect_uri": - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Votre "redirect_uri "devrait être le même dans les deux cas (lorsque vous demandez un code de vérification et un access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) vous devez encoder l'argument lorsque vous demandez un access_token 4) ne doit pas passer l'argument (type = client_cred) lorsque vous demandez un access_token. le serveur d'autorisation émettra un jeton sans partie de session. nous ne pouvons pas utiliser ce jeton avec l'alias "me" dans l'API graphique. Ce jeton aura une longueur de (40) mais un jeton avec une partie session aura une longueur de (81). Un jeton d'accès sans partie de session fonctionnera dans certains cas
Par exemple: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Mais l'API Graph avec l'alias "moi" fonctionnera uniquement avec un jeton avec une partie de session.
Je ne sais pas exactement quand les jetons expirent, mais ils le font, sinon il n'y aurait pas d'option pour donner des autorisations hors connexion.
Quoi qu'il en soit, il est parfois exagéré de demander à l'utilisateur de donner des autorisations hors connexion. Selon vos besoins, il suffit peut-être que le jeton reste valide tant que le site Web est ouvert dans le navigateur de l'utilisateur. Pour cela, il peut y avoir une solution plus simple - reloger l'utilisateur périodiquement en utilisant un iframe: reconnexion automatique facebook à partir du cookie php
A travaillé pour moi ...
C'est quelques années plus tard, mais l'explorateur d'API Facebook Graph a maintenant un petit symbole d'information à côté du jeton d'accès qui vous permet d'accéder à l'application de l'outil de jeton d'accès et de prolonger le jeton d'API pendant quelques mois. Cela pourrait être utile pendant le développement.