2013-06-12 11 views
5

Sto cercando di ingrandire il valore di 'expires_in' (dall'oggetto credenziale, ora è 3600 secondi), perché voglio consentire all'utente di utilizzare la mia app per un lungo periodo. Sto usando un token di aggiornamento, ma è stato aggiornato solo se l'utente utilizza l'app abbastanza spesso.Google OAuth2 - come modificare il valore expires_in o token_expiry?

Se sai come modificare la data token_expiry, sono interessato anche a questa soluzione.

Grazie per eventuali suggerimenti.

risposta

8

Per motivi di sicurezza, il tempo di scadenza è breve e non può essere modificato. Tuttavia, è possibile estendere l'autorizzazione dell'utente senza interagire con l'utente usando refresh_token. In sostanza, come risposta a auth Codice di Borsa, il server fornisce refresh_token che assomiglia a questo:

{ 
    "access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc", 
    "token_type" : "Bearer", 
    "expires_in" : 3600, 
    "refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74" 
} 

Quando gettone scade, tutto ciò che dovete fare è usare refresh_token di ri-autorizzare, senza l'interazione dell'utente. Come questo:

POST /o/oauth2/token HTTP/1.1 
Host: accounts.google.com 
Content-Type: application/x-www-form-urlencoded 

client_id=21302922996.apps.googleusercontent.com& 
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB& 
refresh_token=1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74 
grant_type=refresh_token 

Per rendere le cose più semplici, quando si utilizza Python, che non hanno nemmeno bisogno di preoccuparsi refresh_token se si utilizza Credentials class da google-api-python-client. Basta usare Credentials.authorize() e autorizzerà o aggiornerà automaticamente token in base al tuo stato.

+0

Grazie! Questo è stato utile, ed è qui che Google documenta la richiesta di aggiornamento: https://developers.google.com/identity/protocols/OAuth2WebServer#offline – JJC

Problemi correlati