Non vedo nulla in google_oauth2
che gestisce il recupero di un nuovo access_token
con un token di aggiornamento, quindi sembra che sia necessario effettuare lo scambio direttamente.
Google's official OAuth 2.0 documentation spiega come farlo a un livello basso. All'interno del codice lato server, utilizzare il vostro client HTTP preferito per costruire una richiesta che assomiglia a questo:
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
refresh_token=REFRESH_TOKEN&
grant_type=refresh_token
dove CLIENT_ID
e CLIENT_SECRET
sono gli stessi che hai usato per l'autenticazione originale e REFRESH_TOKEN
è il token di aggiornamento dal flusso di autenticazione originale. Se lo scambio è successo, riceverai un token di accesso fresca in una risposta che sembra qualcosa di simile:
{
"access_token":"1/fFBGRNJru1FQd44AzqT3Zg",
"expires_in":3920,
"token_type":"Bearer",
}
è possibile seguire questa procedura per afferrare un nuovo token di accesso ogni volta che avete bisogno di uno. È possibile utilizzare il valore expires_in
per stimare quando sarà necessario uno nuovo o tentare un aggiornamento ogni volta che la richiesta API risponde con uno stato HTTP 401.
dove implementeresti questo nella tua app per rotaie? per esempio ho una richiesta get per recuperare i contatti degli utenti usando httparty che invia il token, come direi postare il token di aggiornamento se il token è scaduto? – Richlewis
Il codice che ho postato sopra è il codice che fa la richiesta POST per aggiornare il token. Dopo aver eseguito la richiesta GET, vorrei verificare se il codice di risposta è uguale a 401, che in genere è il codice che si ottiene quando è necessario aggiornare il token. Se il codice di risposta HTTParty == 401, esegui il mio codice (adattato alle tue esigenze). – Blake
eccellente, ho lavorato in miniera, grazie – Richlewis