Le API di Google utilizzano il protocollo OAuth 2.0 per l'autenticazione e l'autorizzazione. Google supporta gli scenari OAuth 2.0 comuni, come quelli per le applicazioni dispositivo server web, lato client, installate e con input limitato.
Per iniziare, ottieni le credenziali client OAuth 2.0 da Google API Console. Quindi l'applicazione client richiede un token di accesso dal server di Google Authorization, estrae un token dalla risposta e lo invia all'API di Google a cui vuoi accedere. Per una dimostrazione interattiva dell'utilizzo di OAuth 2.0 con Google (inclusa l'opzione per l'utilizzo delle proprie credenziali client), prova a utilizzare OAuth 2.0 Playground.
Questa pagina fornisce una panoramica degli scenari di autorizzazione OAuth 2.0 supportati da Google e fornisce link a contenuti più dettagliati. Per dettagli sull'utilizzo di OAuth 2.0 per l'autenticazione, consulta la pagina OpenID Connect.
Passaggi di base
Tutte le applicazioni seguono un pattern di base quando accedono a un'API di Google utilizzando OAuth 2.0. In linea generale, devi seguire cinque passaggi:
1. Ottieni le credenziali OAuth 2.0 da Google API Console.
Visita Google API Console per ottenere le credenziali OAuth 2.0, come un ID client e un client secret noti a Google e alla tua applicazione. L'insieme di valori varia in base al tipo di applicazione che stai creando. Ad esempio, un'applicazione JavaScript non richiede un secret, mentre un'applicazione server web sì.
Devi creare un client OAuth appropriato per la piattaforma su cui verrà eseguita la tua app, ad esempio:
- Per il client lato server o le app web JavaScript utilizza il tipo di client "web". Non utilizzare questo tipo di client per altre applicazioni, ad esempio app native o per dispositivi mobili.
- Per le app Android, utilizza il tipo di client "Android".
- Per le app iOS e macOS, utilizza il tipo di client "iOS".
- Per le app Universal Windows Platform, utilizza il tipo di client "Universal Windows Platform".
- Per i dispositivi di input limitati, ad esempio TV o dispositivi incorporati, utilizza il tipo di client "TV e dispositivi di input limitati".
- Per le interazioni server-server, utilizza gli account di servizio.
2. Ottenere un token di accesso dal server di autorizzazione di Google.
Prima che la tua applicazione possa accedere ai dati privati utilizzando un'API Google, deve ottenere un token di accesso che consenta l'accesso all'API. Un singolo token di accesso può concedere vari gradi di accesso a più API. Un parametro di variabile denominato scope
controlla l'insieme di risorse e operazioni consentite da un token di accesso. Durante la richiesta del token di accesso, l'applicazione invia uno o più valori nel parametro scope
.
Esistono diversi modi per eseguire questa richiesta, che variano in base al tipo di applicazione che stai creando. Ad esempio, un'applicazione JavaScript potrebbe richiedere un token di accesso utilizzando un reindirizzamento del browser a Google, mentre un'applicazione installata su un dispositivo che non ha un browser utilizza le richieste del servizio web.
Alcune richieste richiedono un passaggio di autenticazione in cui l'utente accede con il proprio Account Google. Dopo aver eseguito l'accesso, all'utente viene chiesto se è disposto a concedere una o più autorizzazioni richieste dall'applicazione. Questa procedura è chiamata consenso dell'utente.
Se l'utente concede almeno un'autorizzazione, il server di autorizzazione di Google invia alla tua applicazione un token di accesso (o un codice di autorizzazione che l'applicazione può utilizzare per ottenere un token di accesso) e un elenco degli ambiti di accesso concessi dal token. Se l'utente non concede l'autorizzazione, il server restituisce un errore.
In genere, una best practice prevede la richiesta di ambiti in modo incrementale, al momento dell'accesso richiesto, anziché in anticipo. Ad esempio, un'app che vuole supportare il salvataggio di un evento in un calendario non deve richiedere l'accesso a Google Calendar finché l'utente non preme il pulsante "Aggiungi a Calendar"; consulta la sezione Autorizzazione incrementale.
3. Esaminare gli ambiti di accesso concessi dall'utente.
Confronta gli ambiti inclusi nella risposta del token di accesso con quelli richiesti per accedere alle caratteristiche e funzionalità della tua applicazione in base all'accesso a un'API di Google correlata. Disattiva tutte le funzionalità della tua app che non funzionano senza accesso all'API correlata.
L'ambito incluso nella richiesta potrebbe non corrispondere a quello incluso nella risposta, anche se l'utente ha concesso tutti gli ambiti richiesti. Consulta la documentazione di ciascuna API Google per informazioni sugli ambiti necessari per l'accesso. Un'API può mappare più valori della stringa di ambito a un singolo ambito di accesso, restituendo la stessa stringa di ambito per tutti i valori consentiti nella richiesta.
Esempio: l'API Google People può restituire un ambito https://www.googleapis.com/auth/contacts
quando un'app ha richiesto a un utente di autorizzare un ambito di https://www.google.com/m8/feeds/
; il metodo API Google People people.updateContact
richiede un ambito concesso di https://www.googleapis.com/auth/contacts
.
4. Invia il token di accesso a un'API.
Dopo aver ottenuto un token di accesso, un'applicazione lo invia a un'API di Google nell'intestazione della richiesta di autorizzazione HTTP. È possibile inviare token come parametri della stringa di query URI, ma sconsigliamo di farlo, perché i parametri URI possono finire in file di log non completamente sicuri. Inoltre, è buona prassi REST evitare di creare nomi di parametri URI non necessari.
I token di accesso sono validi solo per l'insieme di operazioni e risorse descritte nell'elemento scope
della richiesta di token. Ad esempio, se viene emesso un token di accesso per
l'API Google Calendar, non concede l'accesso all'API Google Contacts. Tuttavia, puoi inviare quel token di accesso all'API Google Calendar più volte per operazioni simili.
5. Aggiorna il token di accesso, se necessario.
I token di accesso hanno una durata limitata. Se la tua applicazione deve avere accesso a un'API Google superiore a quella di un singolo token di accesso, può ottenere un token di aggiornamento. Un token di aggiornamento consente alla tua applicazione di ottenere nuovi token di accesso.
Scenari
Applicazioni server web
L'endpoint OAuth di Google 2.0 supporta le applicazioni server web che utilizzano linguaggi e framework come PHP, Java, Python, Ruby e ASP.NET.
La sequenza di autorizzazione inizia quando l'applicazione reindirizza un browser a un URL Google; l'URL include parametri di ricerca che indicano il tipo di accesso richiesto. Google gestisce l'autenticazione degli utenti, la selezione delle sessioni e il consenso degli utenti. Il risultato è un codice di autorizzazione, che l'applicazione può scambiare con un token di accesso e un token di aggiornamento.
L'applicazione deve archiviare il token di aggiornamento per utilizzo futuro e utilizzarlo per accedere a un'API di Google. Alla scadenza del token di accesso, l'applicazione utilizza il token di aggiornamento per ottenerne uno nuovo.

Per i dettagli, consulta Utilizzo di OAuth 2.0 per le applicazioni server web.
Applicazioni installate
L'endpoint Google OAuth 2.0 supporta le applicazioni installate su dispositivi come computer, dispositivi mobili e tablet. Quando crei un ID client tramite Google API Console, specifica che si tratta di un'applicazione installata, quindi seleziona il tipo di applicazione Android, Chrome, iOS, Universal Windows Platform (UWP) o desktop.
Il processo genera un ID client e, in alcuni casi, un client secret, che viene incorporato nel codice sorgente dell'applicazione. In questo contesto, il client secret non è ovviamente considerato come un secret.
La sequenza di autorizzazione inizia quando l'applicazione reindirizza un browser a un URL Google; l'URL include parametri di ricerca che indicano il tipo di accesso richiesto. Google gestisce l'autenticazione degli utenti, la selezione delle sessioni e il consenso degli utenti. Il risultato è un codice di autorizzazione, che l'applicazione può scambiare con un token di accesso e un token di aggiornamento.
L'applicazione deve archiviare il token di aggiornamento per utilizzo futuro e utilizzarlo per accedere a un'API di Google. Alla scadenza del token di accesso, l'applicazione utilizza il token di aggiornamento per ottenerne uno nuovo.

Per i dettagli, vedi Utilizzare OAuth 2.0 per le applicazioni installate.
Applicazioni lato client (JavaScript)
L'endpoint Google OAuth 2.0 supporta le applicazioni JavaScript che vengono eseguite in un browser.
La sequenza di autorizzazione inizia quando l'applicazione reindirizza un browser a un URL Google; l'URL include parametri di ricerca che indicano il tipo di accesso richiesto. Google gestisce l'autenticazione degli utenti, la selezione delle sessioni e il consenso degli utenti.
Il risultato è un token di accesso, che il client deve convalidare prima di includerlo in una richiesta dell'API Google. Alla scadenza del token, l'applicazione ripete il processo.

Per i dettagli, consulta Utilizzare OAuth 2.0 per le applicazioni lato client.
Applicazioni su dispositivi con input limitato
L'endpoint Google OAuth 2.0 supporta le applicazioni eseguite su dispositivi di input limitato come console per videogiochi, videocamere e stampanti.
La sequenza di autorizzazione inizia con l'applicazione che invia una richiesta di servizio web a un URL Google per un codice di autorizzazione. La risposta contiene diversi parametri, tra cui un URL e un codice che l'applicazione mostra all'utente.
L'utente ottiene l'URL e il codice dal dispositivo, quindi passa a un dispositivo o a un computer separato con funzionalità di input più avanzate. L'utente avvia un browser, accede all'URL specificato, accede e inserisce il codice.
Nel frattempo, l'applicazione esegue il polling di un URL Google a un intervallo specificato. Dopo che l'utente approva l'accesso, la risposta del server Google contiene un token di accesso e un token di aggiornamento. L'applicazione deve archiviare il token di aggiornamento per un uso futuro e utilizzare il token di accesso per accedere a un'API di Google. Alla scadenza del token di accesso, l'applicazione utilizza il token di aggiornamento per ottenerne uno nuovo.

Per maggiori dettagli, consulta la pagina Utilizzare OAuth 2.0 per dispositivi.
Account di servizio
Le API di Google, come l'API Prediction e Google Cloud Storage, possono agire per conto della tua applicazione senza accedere alle informazioni degli utenti. In questi casi, l'applicazione deve dimostrare la propria identità all'API, ma non è necessario il consenso dell'utente. Analogamente, in scenari aziendali, la tua applicazione può richiedere l'accesso delegato ad alcune risorse.
Per questi tipi di interazioni server-server hai bisogno di un account di servizio, ovvero un account che appartiene alla tua applicazione anziché a un singolo utente finale. La tua applicazione chiama le API di Google per conto dell'account di servizio e il consenso dell'utente non è necessario. In scenari diversi dagli account di servizio, la tua applicazione chiama le API di Google per conto degli utenti finali e, a volte, è necessario il consenso dell'utente.
Le credenziali di un account di servizio, che puoi ottenere da Google API Console, includono un indirizzo email generato e univoco, un ID client e almeno una coppia di chiavi pubbliche/private. Utilizza l'ID client e una chiave privata per creare un JWT firmato e creare una richiesta del token di accesso nel formato appropriato. L'applicazione invia quindi la richiesta del token al server di autorizzazione Google OAuth 2.0, che restituisce un token di accesso. L'applicazione utilizza il token per accedere a un'API di Google. Alla scadenza del token, l'applicazione ripete il processo.

Per maggiori dettagli, consulta la documentazione relativa agli account di servizio.
Dimensioni token
Le dimensioni dei token possono variare fino ai limiti seguenti:
- Codici di autorizzazione: 256 byte
- Token di accesso: 2048 byte
- Token di aggiornamento: 512 byte
I token di accesso restituiti dall'API Security Token Service di Google Cloud sono strutturati in modo simile ai token di accesso OAuth 2.0 dell'API Google, ma hanno limiti di dimensioni del token diversi. Per maggiori dettagli, consulta la documentazione dell'API.
Google si riserva il diritto di modificare le dimensioni dei token entro questi limiti e la tua applicazione deve supportare le dimensioni dei token variabili di conseguenza.
Aggiorna scadenza token
Devi scrivere il tuo codice per prevedere la possibilità che un token di aggiornamento concesso non funzioni più. Un token di aggiornamento potrebbe non funzionare più per uno dei seguenti motivi:
- L'utente ha revocato l'accesso della tua app.
- Il token di aggiornamento non viene utilizzato per sei mesi.
- L'utente ha cambiato le password e il token di aggiornamento contiene gli ambiti Gmail.
- L'account utente ha superato un numero massimo di token di aggiornamento concessi (in tempo reale).
- Se un amministratore
ha impostato uno dei servizi richiesti negli ambiti della tua app su Con restrizioni (l'errore
è
admin_policy_enforced
). - Per le API Google Cloud Platform: la durata della sessione impostata dall'amministratore potrebbe essere stata superata.
A un progetto Google Cloud Platform con una schermata per il consenso OAuth configurata per un tipo di utente esterno e con lo stato di pubblicazione "Test" viene assegnato un token di aggiornamento che scade tra 7 giorni, a meno che gli unici ambiti OAuth richiesti siano un sottoinsieme di nome, indirizzo email e profilo utente (tramite gli ambiti
userinfo.email, userinfo.profile, openid
o i loro equivalenti OpenID Connect).
Attualmente è previsto un limite di 100 token di aggiornamento per Account Google per ogni ID client OAuth 2.0. Se il limite viene raggiunto, la creazione di un nuovo token di aggiornamento invalida automaticamente il token di aggiornamento meno recente senza preavviso. Questo limite non si applica agli account di servizio.
Esiste anche un limite maggiore al numero totale di token di aggiornamento che un account utente o un account di servizio può avere per tutti i client. La maggior parte degli utenti normali non supererà questo limite, ma un account sviluppatore utilizzato per testare un'implementazione potrebbe farlo.
Se devi autorizzare più programmi, macchine o dispositivi, una soluzione alternativa è limitare il numero di client autorizzati per ogni Account Google a 15 o 20. Se sei un amministratore di Google Workspace, puoi creare utenti aggiuntivi con privilegi amministrativi e utilizzarli per autorizzare alcuni client.
Gestione dei criteri di controllo della sessione per le organizzazioni che utilizzano Google Cloud Platform (GCP)
Gli amministratori delle organizzazioni Google Cloud potrebbero richiedere una frequente riautenticazione degli utenti mentre accedono alle risorse GCP, utilizzando la funzionalità di controllo della sessione di Google Cloud. Questo criterio influisce sull'accesso a Google Cloud Console, all'SDK Google Cloud (noto anche come gcloud CLI) e a qualsiasi applicazione OAuth di terze parti che richiede l'ambito Cloud Platform. Se un
utente ha impostato un criterio di controllo della sessione, alla scadenza della durata della
sessione le chiamate API verranno eliminate in modo simile a quanto accade se il token di aggiornamento fosse revocato: la
chiamata non andrà a buon fine con un tipo di errore invalid_grant
; il campo error_subtype
può essere utilizzato per distinguere tra un token revocato e un errore dovuto a un criterio di controllo della sessione (ad esempio, "error_subtype": "invalid_rapt"
). La durata della sessione può essere molto limitata (tra 1 ora e 2)
Analogamente, non devi utilizzare o incoraggiare l'uso delle credenziali utente per il deployment da server a server. Se viene eseguito il deployment delle credenziali utente su un server per operazioni o operazioni di lunga durata e un cliente applica i criteri di controllo della sessione per tali utenti, l'applicazione del server avrà esito negativo poiché non sarà possibile autenticare nuovamente l'utente alla scadenza della sessione.
Per ulteriori informazioni su come aiutare i clienti a eseguire il deployment di questa funzionalità, consulta questo articolo del Centro assistenza incentrato sugli amministratori.
Librerie client
Le seguenti librerie client si integrano con i framework più comuni, semplificando l'implementazione di OAuth 2.0. Nel tempo verranno aggiunte altre funzionalità alle raccolte.
- Libreria client delle API di Google per Java
- Libreria client delle API di Google per Python
- Libreria client delle API di Google per Go
- Libreria client delle API di Google per .NET
- Libreria client API di Google per Ruby
- Libreria client delle API di Google per PHP
- Libreria client delle API di Google per JavaScript
- GTMAppAuth - Libreria client OAuth per Mac e iOS