In questo articolo vedremo come ottenere un refresh token per le Google API. Può essere molto utile utilizzare un refresh token per eseguire l’autenticazione sulla Google API, ad esempio da codice lato server (da cui non è possibile eseguire il normale flusso Oauth 2). Vedremo, quindi, nel dettaglio come ottenere un authorization code da browser e successivamente come scambiarlo per un refresh token usando Postman.
Cos’è l’authorization code e il refresh token?
- Authorization Code: È un codice temporaneo fornito da Google dopo che un utente ha autorizzato l’accesso. Serve per ottenere l’access token e il refresh token.
- Refresh Token: È un token persistente che consente di ottenere nuovi access token senza richiedere continuamente l’autorizzazione dell’utente.
Questi elementi sono fondamentali per accedere alle API di Google in modo sicuro e continuo.
Passo 1: Configurare il progetto su Google Cloud
Prima di iniziare, devi configurare il tuo progetto su Google Cloud:
- Accedi alla Google Cloud Console.
- Crea un nuovo progetto o selezionane uno esistente.
- Vai su API e Servizi > Libreria e abilita l’API che ti serve.
- Vai su API e Servizi > Credenziali:
- Crea credenziali del tipo ID Client OAuth 2.0.
- Imposta come Origini JavaScript autorizzate: http://localhost
- Configura un URI di reindirizzamento autorizzati. Nel nostro caso inserisci
https://oauth.pstmn.io/v1/callback
che ci servirà poi per la chiamata con Postman.
Salva il tuo client_id
e client_secret
.
Passo 2: Generare l’authorization code da browser
Creare l’URL di autorizzazione
Per ottenere l’authorization code, devi costruire un URL di autorizzazione. Ecco il formato base:
https://accounts.google.com/o/oauth2/auth?response_type=code &client_id=YOUR_CLIENT_ID &redirect_uri=YOUR_REDIRECT_URI &scope=YOUR_SCOPES &access_type=offline &prompt=consent
Parametri dell’URL
response_type=code
: Specifica che vuoi un authorization code.client_id
: Il tuo client ID fornito da Google.redirect_uri
: Deve corrispondere esattamente al valore configurato nella Google Cloud Console.scope
: Gli ambiti richiesti, ad esempiohttps://www.googleapis.com/auth/gmail.readonly
.access_type=offline
: Richiede anche un refresh token oltre all’access token.prompt=consent
: Forza la richiesta del consenso anche se l’utente ha già autorizzato l’app.
Esempio completo
Supponiamo di avere:
client_id
:1234567890.apps.googleusercontent.com
redirect_uri
:https://oauth.pstmn.io/v1/callback
scope
:https://www.googleapis.com/auth/gmail.readonly
L’URL sarà:
https://accounts.google.com/o/oauth2/auth?response_type=code &client_id=1234567890.apps.googleusercontent.com &redirect_uri=https://oauth.pstmn.io/v1/callback &scope=https://www.googleapis.com/auth/gmail.readonly &access_type=offline &prompt=consent
Aprire l’URL nel browser
- Copia l’URL generato.
- Incollalo nel browser.
- Effettua l’accesso con il tuo account Google.
- Concedi i permessi richiesti dall’app.
- Verrai reindirizzato al tuo
redirect_uri
con un parametrocode
nella query string, ad esempio:https://oauth.pstmn.io/v1/callback?code=4/0AbCdefGhIjklMNOPQRSTUVWXYZ
- Copia il valore del parametro
code
(ad esempio4/0AbCdefGhIjklMNOPQRSTUVWXYZ
). Questo è il tuo authorization code.
Passo 3: Ottenere il refresh token con Postman
Ora che hai l’authorization code, puoi scambiarlo per ottenere un refresh token usando Postman.
Configurazione di Postman
- Crea una nuova richiesta:
- Metodo:
POST
- URL:
https://oauth2.googleapis.com/token
- Metodo:
- Imposta gli Headers:
Content-Type
:application/x-www-form-urlencoded
- Imposta il Body: Vai alla scheda Body, scegli il formato
x-www-form-urlencoded
e inserisci i seguenti parametri: Chiave Valorecode
YOUR_AUTHORIZATION_CODE
client_id
YOUR_CLIENT_ID
client_secret
YOUR_CLIENT_SECRET
redirect_uri
YOUR_REDIRECT_URI
grant_type
authorization_code
Esempio completo del body
Chiave | Valore |
---|---|
code | 4/0AbCdefGhIjklMNOPQRSTUVWXYZ |
client_id | 1234567890.apps.googleusercontent.com |
client_secret | my-client-secret |
redirect_uri | https://oauth.pstmn.io/v1/callback |
grant_type | authorization_code |
Invia la richiesta
- Premi Send in Postman.
- Se tutto è configurato correttamente, otterrai una risposta simile:
{ "access_token": "ya29.a0AfH6SM...", "expires_in": 3600, "refresh_token": "1//0gkPvK5...", "scope": "https://www.googleapis.com/auth/gmail.readonly", "token_type": "Bearer" }
- Copia e salva il valore del
refresh_token
. Questo token ti permetterà di ottenere nuovi access token senza dover richiedere nuovamente il consenso dell’utente.
Conclusione
In questo articolo abbiamo visto come:
- Ottenere un authorization code da browser.
- Usare Postman per scambiarlo con un refresh token.
Questo processo è utile per creare applicazioni sicure che interagiscono con le API di Google senza dover richiedere continuamente l’autenticazione dell’utente, ad esempio applicazioni lato server.
Se hai domande o desideri una consulenza dedicata, contattaci!