Token-Authentifizierung mit Volley
Wenn ich einen server wo ich die Authentifizierung mit Benutzername/Passwort und get auth token für nachfolgende Anfragen, was wäre der beste Ansatz, dieses problem anzugehen?
Die Strömung sollte wie folgt sein:
- Anfrage starten
- Wenn wir nicht die auth-token - Holen Sie sich mit Benutzername und Passwort
- Stellen Sie Anfrage mit auth-token
- Wenn die Anforderung ist fehlgeschlagen, da token abgelaufen ist, erhalten Sie neue auth-token mit Benutzername und Passwort
- Retry-request mit neuen auth-token
- Finish
Habe ich bemerkt, dass Volley bereits möglicherweise etwas, das könnte das Problem lösen - Authenticator https://android.googlesource.com/platform/frameworks/support/+/4474bc11f64b2b274ca6db5a1e23e8c1d143d5fa/volley/src/com/android/volley/toolbox/Authenticator.java Es enthält getAuthToken() und invalidateAuthToken () - Methoden, die wäre genau das was ich will. Aber es scheint, dass es nie in der Bibliothek.
InformationsquelleAutor der Frage MantasV | 2013-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verwendet volley für ein system-Authentifizierung mit longlive (LLT) und shortlive (SLT) - Token.
Habe ich es manuell, aber es war wirklich nicht viel Arbeit, wenn Sie es bekommen alle legte.
Haben alle sichere Anfragen Unterklasse eine baseSecureRequest, kann dieses token-Mechanismus allgemein für alle sichern Antrag in seiner onResponse() und onErrorResponse().
Wird es ein wenig node.js Stil, wo Anfragen senden Sie weitere Anfragen und warten auf Rückrufe.
Einer app kann ein Dutzend Bildschirme, nur mit der Hälfte erfordert auth-access - so dass jeder Bildschirm sollte unwissend sein, wie die Anforderungen seiner Anfrage.
Szenario A
Speicher, so stellen Sie eine TokenRequest.
das token-Speicher (lassen Sie ein singleton-session-manager festhalten oder
ähnliche omni-present-Klasse)
Beton-class-request-Objekt, um weiterhin mit der aktualisierten token.
Szenario B
Senden wir eine sichere Anfrage, aber unsere SLT stale (abgelaufen)
Gibt der server einen Fehler-code oder msg, dass man Sie fangen kann, in der
Allgemeine onErrorResponse() der baseSecureRequest.
In diesem onError(), senden Sie eine refreshTokenRequest () - Objekt
versuche zur Aktualisierung des SLT in Erinnerung durch das anfordern einer neuen SLT aus Sie den server mit dem LLT.
den onResponse() der refreshTokenRequest können nun den Rückruf der
original-Anfrage zu senden.
alles, was nicht eine connectivity-Fehler - ein Fehler, verursacht durch
ungültige LLT. Wenn Sie versuchen, zu aktualisieren, mit einem schlechten LLT Sie nie aus.
InformationsquelleAutor der Antwort mjw
InformationsquelleAutor der Antwort Gaurav Agarwal
Haben, sehen Sie in diesem blog-post? https://smaspe.github.io/2013/06/06/volley-part2.html
Zeigt eine einfache Möglichkeit des überwiegenden request-Objekt zu verwenden, twitter-Token.
InformationsquelleAutor der Antwort cbrulak
getToken()
gescheitert. StatusBAD_AUTHENTICATION
FehlerIch auch vor dem gleichen problem.
Lösung: überprüfen Sie, ob das Gerät sign-in mit Ihrem Google-Konto.
InformationsquelleAutor der Antwort prajakta waikar