Ne peut pas autoriser l'utilisateur à Facebook JS SDK : “Ce code d'autorisation a été utilisée.” ou comment obtenir une nouvelle autorisation de jeton?
Je suis en train d'essayer d'utiliser Facebook pour authentifier les utilisateurs. Il fonctionne bien sauf pour les appels Ajax. La plupart du temps, il suffit d'envoyer ancien jeton et j'obtiens :
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Donc ce que j'ai essayé de faire est d'emballage de chaque appel ajax avec
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
return fn();
...
cela n'a pas fonctionné donc j'ai ajouté : vrai comme paramètre à getLoginStatus à empêcher la mise en cache :
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('connected');
fn();
} else if (response.status === 'not_authorized') {
console.log('not_authorized);
} else {
console.log('not_logged_in');
}
},true);
Grand! Sauf qu'il est terriblement lent. Suis-je en train de faire quelque chose de mal? Puis-je obtenir un nouveau jeton après chaque action, donc je n'ai pas besoin d'attendre avant le prochain?
Merci
W
Vous devez vous connecter pour publier un commentaire.
Voici ce que Facebook dit:
"De nouvelles restrictions de sécurité pour l'authentification OAuth codes d'autorisation.
Nous allons autoriser uniquement les codes d'autorisation pour être échangés contre des jetons d'accès qu'une seule fois et doivent être échangés pour un jeton d'accès en moins de 10 minutes de leur création. Ceci est en ligne avec le protocole OAuth 2.0 Spec qui dès le début a déclaré que "les codes d'autorisation DOIT être de courte durée et à usage unique". Pour plus d'informations, consultez notre Authentification de la documentation.
Le moyen de contourner cela est d'utiliser l'extension de votre jeton d'accès de l'api:
https://developers.facebook.com/docs/howtos/login/extending-tokens/