Je m'amuse avec l'autorisation Oauth 2.0 dans Facebook et je me demandais si les jetons d'accès que Facebook distribue expirent. Si oui, y a-t-il un moyen de demander un jeton d'accès longue durée?
Après avoir fouillé un peu, j'ai trouvé ça. Cela semble être la réponse:
Mise à jour (11/Avril/2018)
Annonce de modification Facebook (10/04/2018)
page d'expiration du jeton mis à jour Facebook (10/04/2018)
offline_access: permet à votre application d'exécuter à tout moment des demandes autorisées pour le compte de l'utilisateur. Par défaut, la plupart des jetons d'accès expirent après une courte période pour garantir que les applications ne font des demandes que pour le compte de l'utilisateur lorsqu'elles utilisent activement l'application. Cette autorisation rend le jeton d'accès renvoyé par notre OAuth noeud final de longue durée.
C'est une valeur de permission demandée.
http://developers.facebook.com/docs/authentication/permissions
[~ # ~] met à jour [~ # ~]
l'autorisation offline_access a été supprimée il y a un certain temps.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Essayez ceci peut être que ça va aider complet pour vous
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
Sens de scope=offline_access
est-ce :-
Permet à votre application d’effectuer à tout moment des demandes autorisées pour le compte de l’utilisateur. Par défaut, la plupart des jetons d'accès expirent après une courte période pour garantir que les applications ne font des demandes que pour le compte de l'utilisateur lorsqu'elles utilisent activement l'application. Cette autorisation rend le jeton d'accès renvoyé par notre OAuth noeud final de longue durée.
Mais selon la mise à niveau future de Facebook, la fonctionnalité offline_acees sera obsolète à partir du 3 octobre 2012. L'utilisateur se verra attribuer un jeton d'accès de longue durée pendant 60 jours. Avant l'expiration du jeton d'accès, Facebook le notifiera ou vous pourrez obtenir votre fonctionnalité de notification récupérant la valeur d'expiration de l'API Facebook ..
Notez que Facebook désapprouve maintenant l'autorisation offline_access au profit de jetons pour lesquels vous pouvez demander une "mise à niveau" jusqu'à l'expiration. Je viens juste de régler ce problème moi-même, donc je n'ai pas grand chose à dire, mais ce document peut aider:
https://developers.facebook.com/docs/offline-access-deprecation/
Je suis venu ici avec la même question que le PO, mais les réponses suggérant l'utilisation de offline_access soulèvent des drapeaux rouges pour moi.
Du point de vue de la sécurité, obtenir un accès hors connexion au compte Facebook d'un utilisateur est qualitativement différent et beaucoup plus puissant que la simple utilisation de Facebook pour la connexion 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. Je mets "l'application" entre guillemets, car c'est en réalité n'importe quel outil qui possède les informations d'identification. Vous pouvez créer toute une suite d'outils qui n'ont rien à voir avec le serveur Web et qui peuvent accéder aux informations que l'utilisateur a accepté de partager avec celles-ci. identifiants.
Je n'utiliserais pas cette fonctionnalité pour travailler sur une durée de vie de jeton courte; ce n'est pas sa destination. En effet, la durée de vie des jetons est en soi un élément de sécurité. Je cherche toujours des détails sur l'utilisation correcte de ces jetons (Puis-je les conserver? Comment puis-je les sécuriser? Facebook incorpore-t-il le OAuth 2.0 "rafraîchir le jeton" dans le bloc principal Si non, où est-il et/ou comment puis-je actualiser?), mais je suis 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 'access_token', et d'après ce que je peux dire, c'est environ 2 heures. J'ai cherché, mais je ne vois pas le moyen de demander un délai d'expiration plus long.
depuis que j'ai eu le même problème - voir l'excellent post sur ce sujet de ben biddington, qui a clarifié toutes ces questions 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 connexion ne peut pas garantir que vous obtenez un jeton d'accès permanent, celui-ci change chaque fois que l'utilisateur révoque votre accès à l'application ou qu'il modifie son mot de passe.
Cité sur 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 de l'utilisateur offline_access, le jeton d'accès n'a pas d'expiration. Cependant, il est invalidé chaque fois que l'utilisateur modifie son mot de passe.
Supposons que vous stockiez l'identifiant utilisateur et le jeton facebook de l'utilisateur dans une table d'utilisateurs de votre base de données, chaque fois que l'utilisateur clique sur le bouton "Connexion 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 de la table.
Cliquez dessus pour échanger un jeton d’accès court en vivant contre un jeton vivant (long)/non expirant (pages):
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
connectez-vous à votre compte facebook et modifiez les paramètres de votre application (compte -> paramètres de l'application -> autorisation supplémentaire de l'application utilisant votre compte). décochez l'autorisation (Accédez à mes données lorsque je n'utilise pas l'application (offline_access)). Face fera alors un nouveau jeton lorsque vous vous connecterez à l'application.
Le jeton facebook de base expire environ une heure plus tard. Mais vous pouvez utiliser le 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 points suivants lorsque vous interagissez avec Facebook Graph Api.
1) L’URL de connexion de 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 identique 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 coder l’argument lorsque vous demandez un access_token 4) ne doit pas transmettre 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 "moi" alias dans le graphique api. Ce jeton aura une longueur de (40), mais un jeton avec partie de session aura une longueur de (81). Un jeton d'accès sans partie de session fonctionnera avec certains cas
par exemple: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Mais Graph API avec "moi" alias ne fonctionnera qu'avec un jeton avec une partie de session.
Je ne sais pas quand exactement les jetons expirent, mais c'est le cas, sinon il n'y aurait pas d'option pour donner des autorisations hors connexion.
Quoi qu’il en soit, obliger parfois l’utilisateur à donner des autorisations hors ligne est un fardeau excessif. En fonction de 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 pourrait y avoir une solution plus simple: reloguer l’utilisateur en utilisant périodiquement une iframe: reconnexion automatique avec Facebook à partir du cookie php
Travaillé pour moi ...