Plus tôt dans la journée, le flux de connexion Facebook de notre application web a cessé de fonctionner pour certains utilisateurs. Lorsque nous essayons de récupérer le profil actuel, une erreur est renvoyée. Il prétend que le jeton d'accès que nous venons de générer en redirigeant l'utilisateur vers le flux de connexion OAuth a été rejeté.
La raison invoquée est la suivante :
Le jeton d'accès n'est pas valide car l'utilisateur n'a pas utilisé l'application depuis plus de 90 jours.
Pour moi, cela n'a aucun sens puisque nous ne stocker le jeton d'accès n'importe où, sauf dans la session en cours, et le recréer chaque fois que l'utilisateur se connecte à Facebook.
La trace de la pile de Spring Social pour le GET /me
L'appel ressemble à ceci :
ERR c.s.f.v.resource.AuthenticationResource Exception when connecting with Facebook
org.springframework.social.RevokedAuthorizationException: The authorization has been revoked. Reason: The access token is invalid since the user hasn't engaged the app in longer than 90 days.
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:85)
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:775)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:728)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:702)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:350)
at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:220)
at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:215)
Le problème est probablement lié à changements dans l'API de Facebook mais je ne vois pas comment cela affecte les jetons d'accès de courte durée que nous créons à chaque connexion.