Hoy vamos a aprender cómo obtener un refresh token de Google OAuth 2.0 para utilizar servicios de google console.

Lo primero que haremos es obtener los datos de autenticación por token de google.
Para ello:
client_id
y client_secret
Los obtienes desde la Consola de Google Cloud:
Pasos:
- Ve a: https://console.cloud.google.com/
- Crea un proyecto (si no tienes uno ya).

- Activa la API de Google Play Developer API (si estás validando suscripciones, por ejemplo).

- En el menú de la izquierda:
- Ve a APIs y servicios → Credenciales.
- Crea un ID de cliente OAuth 2.0 (tipo «Aplicación de escritorio» o «Servidor web»).

- Te dará el:
client_id
client_secret
NOTA: puede pedir crear una pantalla de consentimiento, en este caso hay que crearla.
Elegimos usuarios externos. Y creamos una de prueba (no pasa nada ya que la usaremos para validarnos a nosotros mismos).
Si creamos tipo Aplicación web.
Poner en Origines autorizados de JavaScript:
http://localhost:8000
Y de redireccionamiento:
http://localhost:8000/auth/callback
Añadir los scopes
https://www.googleapis.com/auth/androidpublisher
Añadimos el scope

Hay que pulsar en SAVE abajo de la página.
2. Conseguir refresh token
Este lo obtienes una vez al completar el proceso de autenticación OAuth 2.0 con un usuario (generalmente tú mismo).
Generas una URL como esta para obtener un authorization_code
:
https://accounts.google.com/o/oauth2/v2/auth? scope=https://www.googleapis.com/auth/androidpublisher& access_type=offline& include_granted_scopes=true& state=xyz123& redirect_uri=http://localhost:8000/auth/callback& response_type=code& client_id=TU_CLIENT_ID
Y el codigo aparece arriba en ?code=
Pegas esa URL en un navegador, haces login con tu cuenta de Google, y te devuelve un code
.
Ese code
es tu code que usaras para obtener un authorization_code
Nota: si aparece acceso bloqueado, hay que darle acceso.
Para darle acceso a los usuarios ve a Público > Usuarios de prueba

Nos dirá que Google no ha verificado esta aplicación, pero nos da igual, pulsamos en continuar.
Continuando:
Ahora devolverá el Código de autorización que debes guardar.
Para obtener el token de acceso usamos esto:
curl -X POST https://oauth2.googleapis.com/token \ -d "code=EL_CODE_QUE_COPIASTE" \ -d "client_id=TU_CLIENT_ID" \ -d "client_secret=TU_CLIENT_SECRET" \ -d "redirect_uri=http://localhost:8000/auth/callback" \ -d "grant_type=authorization_code"
*En code indicas el código que te ha devuelto.
Esta llamada y SOLO la primera vez, devolverá un código refresh_token y access_token. El código de refresco no caduca, por lo que tendrás que guardarlo para obtener los nuevos access_token.
Ejemplo de respuesta que devuelve:
{ "access_token": "...", "expires_in": 3599, "refresh_token": "...", "scope": "https://www.googleapis.com/auth/androidpublisher", "token_type": "Bearer" }
Y ahora, para obtener un access token cada vez que nos haga falta:
curl -X POST https://oauth2.googleapis.com/token \ -d "client_id=TU_CLIENT_ID" \ -d "client_secret=TU_CLIENT_SECRET" \ -d "refresh_token=2303432efg..." \ # ← El que ha deuvelto en la llamada anterior -d "grant_type=refresh_token"

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.