No veo nada en google_oauth2
que maneja la obtención de un nuevo access_token
con un token de actualización, por lo que parece que tendrá que realizar el intercambio directamente.
Google's official OAuth 2.0 documentation explica cómo hacerlo a un nivel bajo. Dentro de su código del lado del servidor, use su cliente HTTP favorita para construir una solicitud que tiene este aspecto:
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
donde CLIENT_ID
y CLIENT_SECRET
son los mismos que haya utilizado para la autenticación original y REFRESH_TOKEN
es el token de actualización de la flujo de autenticación original. Si el intercambio se realiza correctamente, recibirá un token de acceso fresca en una respuesta que se ve algo como esto:
{
"access_token":"1/fFBGRNJru1FQd44AzqT3Zg",
"expires_in":3920,
"token_type":"Bearer",
}
Usted puede seguir este proceso para tomar un nuevo token de acceso siempre que lo necesite. Puede usar el valor expires_in
para estimar cuándo necesitará uno nuevo, o intentar una actualización siempre que su solicitud API responda con un estado HTTP 401.
¿dónde implementarías esto en tu aplicación de rieles? por ejemplo, tengo una solicitud de obtención para recuperar los contactos de los usuarios usando httparty que envía el token, ¿cómo puedo decir publicar el token de actualización si el token ha caducado? – Richlewis
El código que publiqué arriba es el código que hace la solicitud POST para actualizar el token. Después de realizar su solicitud GET, verificaría si el código de respuesta es igual a 401, que es típicamente el código que obtendrá cuando necesite actualizar su token. Si el código de respuesta de HTTParty == 401, ejecute mi código (ajustado para sus necesidades). – Blake
excelente, tengo trabajo en la mina, gracias – Richlewis