2016-04-24 5 views
0

Was ist los mit meinem Setup?Google Oauth2 Contacts API gibt ungültiges Token zurück: Statusloses Token ist nach einer Stunde abgelaufen

Ich benutze Django-Allauth für soziale Anmeldung und vor kurzem habe ich Kontakte zu seinem Umfang hinzugefügt. Die Dinge funktionieren gut. Es fragt jetzt nach der Erlaubnis, Kontakte zu verwalten, und ich bin in der Lage, Kontaktdaten von Benutzern über die API zu erhalten.

Aber sobald ich eine Anfrage stellen, um Kontakte eines Benutzers zu erhalten (ich speichere kein Refresh-Token oder accss-Token zu diesem Zeitpunkt), nach einer Stunde, wenn ich die Anfrage erneut mit demselben Token mache, zeigt es diesen Fehler " Ungültiges Token: Statusloses Token abgelaufen ".

Allerdings kann ich immer noch in die Website einloggen und das Token ändert sich nicht. Wenn ich mich jedoch abmelde und erneut anmelde, ändert sich das Token und ich kann die Kontakte, die dieses Token verwenden, für eine Stunde wieder abrufen.

Was ist das Problem? Was vermisse ich?

Antwort

0

Wenn Sie sich bei der Website anmelden, verwenden Sie wahrscheinlich Cookies. Sie können also die gleiche Sitzung verwenden und die API wird nicht aufgerufen.

Die Zeit, wenn Sie im Inkognito-Modus oder in einem anderen Browser anmelden, kann dieser Cookie nicht verwendet werden, so dass dieses Mal API aufgerufen wird. Aus diesem Grund wird das Token geändert.

Zum Beispiel, wenn Sie sich nach der Anmeldung bei Google den Umfang der App geändert haben, was passiert, wenn der Benutzer Cookies aktiviert hat und nicht abgelaufen ist, wenn er Ihre Seite besucht, loggt er sich einfach ein er in. Es fragt nicht nach Berechtigungen (die Sie kürzlich in den Bereich hinzugefügt haben). Aber wenn er sich abmeldet und wieder anmeldet, fragt er nach der zusätzlichen Erlaubnis und das Token wird ebenfalls geändert.

Was Sie tun sollten, ist, sollten Sie die Codes von Django-Allauth durchgehen und klären, wie sie das Token verwenden. Sie müssen außerdem wissen, dass für das Abrufen des Aktualisierungstokens der Offlinezugriff in Ihrer Konfiguration aktiviert sein muss.