2014-11-17 15 views
6

Sto usando GoogleAuthUtil in Google Play Services su Android. Dopo aver chiamato GoogleAuthUtil.getToken(context, userName, scope), ho ricevuto un gettone come questo:Come ottenere refreshToken quando si utilizza GoogleAuthUtil

ya29.wQBWztab5kcgMLcMbAI0LwFzHC_DPrxauSWbX4P6KOnBEOgjcm9V7OI9AFr6JGxDY54gP00RemzzgML56_gWRHn8Q5jK16BLY-0y83Gc5vfe3xN-QpyM4d7z 

Questo è un access_token, che può essere utilizzato nel chiamare Google Apis. Quindi, come posso ottenere un token di aggiornamento per aggiornare questo access_token, perché io uso anche Google oauth java library e YouTube Java Library nel mio progetto Android, voglio usare queste due librerie per mantenere/gestire i valori access_token, refresh token e expires_in. (Quando si utilizza Google biblioteca OAuth java, la TokenResponse è tornato contiene access_token, refresh token e expires_in)

Grazie in anticipo.

risposta

2

Non è possibile ottenere direttamente un refreshToken utilizzando GoogleAuthUtil.getToken() ma se si chiama getToken() ogni volta che si verifica un errore 401, GoogleAuthUtil restituirà un nuovo token valido se necessario.

+0

Potrebbe elaborare su di esso? Forse un link utile su come gestirlo? – dVaffection

+0

Spiacente non ricordo più i dettagli su questo: - /. Ricordo di aver cercato un modo per ottenere un refresh_token ma non ne ho trovato uno quindi ho appena chiamato 'getToken' come descritto qui: https://developers.google.com/android/guides/http-auth – mbonnin

2

Al fine di ottenere un token di aggiornamento, assicurarsi che il vostro campo di applicazione è il seguente formato:

Account account = new Account(mEmail, GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); 
mScope="oauth2:server:client_id:"+ OAUTH_WEBCOMPONENT_ID+":api_scope:"+"https://www.googleapis.com/auth/userinfo.email"; 
return GoogleAuthUtil.getToken(mActivity, account, mScope); 

questo vi darà un codice di autorizzazione, che può essere inviato al componente web.

Il tuo webcomponent può utilizzare questo codice di autorizzazione solo una volta per ottenere un token di accesso e un token di aggiornamento con questo codice. Devi salvare il token di aggiornamento nel tuo database, in modo che quando il codice di accesso non sia più valido puoi ottenere un nuovo token di accesso quando necessario.

POST /oauth2/v3/token HTTP/1.1 
Host: www.googleapis.com 
Content-length: 233 
content-type: application/x-www-form-urlencoded 
user-agent: google-oauth-playground 

code=4%2FVL2YMuPMheOP2-0vyKBSfGd-4er5GsMY17Ecp8ITK4U&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=407408718192.apps.googleusercontent.com&client_secret=************&scope=&grant_type=authorization_code 

È possibile simulare come funziona qui:

https://developers.google.com/oauthplayground/