2011-08-30 8 views
5

Devo invalidare e richiedere un nuovo token ogni volta che ho bisogno di effettuare una richiesta utilizzando un token di autenticazione Google da AccountManager o c'è un timestamp 'scaduto-in' che posso usare per vedere se è ancora valido.Gestione account manager android token scaduto

risposta

1

Non esiste un tempo di scadenza previsto nella risposta HTTP dal servizio Google, quindi penso che sia necessario assicurarsi che se l'auth-token non fornisce l'accesso, lo si utilizza come trigger per ottenere un nuovo token di autenticazione. Oppure potresti acquisire un nuovo token ogni volta che l'applicazione si avvia, o creare il tuo timeout.

http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html

-2

è necessario chiamare invalidateAuthToken(String, String) quando si sa che il token è scaduto. vale a dire quando la richiesta fallisce con un errore di autenticazione.

+2

Sì, la mia domanda era più quella che è il modo migliore per scoprire se il token è scaduto. –

1

Guardando la risposta HTTP, il codice di stato è 302 (sta reindirizzando l'utente per fornire token di autenticazione) e il campo "Set-Cookie" nell'intestazione è non presente. Potresti chiuderlo.

if (res.getStatusLine().getStatusCode() == 302 && res.getHeaders("Set-Cookie").length == 0) { 
    // we need a new token 
    // invalidate account manager logic here 
} 

Non riuscendo a ottenere il cookie da parte di Google sembra indicare è il momento di prendere un nuovo token da AccountManager.

0

Poiché non esiste ancora una risposta accettata: Lo faccio licenziando le mie richieste in un blocco try, quindi rilevando eventuali eccezioni e controllando se è un 401 con if (e.getMessage().equals("401 Unauthorized")) { ... }. Quindi, invalidare il token di autenticazione, richiederne uno nuovo e riprovare la richiesta.

Problemi correlati