Cómo obtener el refresh token de Google paso a paso (OAuth 2.0)

Tiempo de lectura: 3 minutos

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

Enredaderas fhachada - pexels

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:

  1. Ve a: https://console.cloud.google.com/
  2. Crea un proyecto (si no tienes uno ya).
Habilitar APIs y servicios
  1. Activa la API de Google Play Developer API (si estás validando suscripciones, por ejemplo).
Servicio Google play android developer api
  1. 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»).
Credenciales tipo oath
  1. 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

Usuarios de prueba en google auth

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"

Deja un comentario