Nella Google Drive API, la scelta tra service account e OAuth è la scelta tra due identità. OAuth permette a un sito di agire come una persona: qualcuno accede con Google, approva l'accesso e il sito prende in prestito il suo permesso. Un service account (in italiano "account di servizio") è un'identità Google separata che appartiene al sito e vede solo le cartelle che condividi con lei. I collegamenti OAuth creati con una tua app Google possono scadere dopo 7 giorni o richiedere la verifica di Google; un service account evita entrambe le cose, ma ti lascia un file chiave da custodire.
Due modi con cui un sito può entrare in Google Drive
Un plugin WordPress che mostra file di Drive deve dimostrare a Google di avere il permesso di leggerli. Google offre due modi principali per farlo, e la differenza si capisce meglio con un paragone di tutti i giorni.
OAuth: prestare il proprio accesso
Pensa all'ospite di un albergo che firma un modulo perché il portiere possa ritirare i pacchi al posto suo. Con OAuth clicchi Accedi con Google, Google mostra una schermata che dice quale app sta chiedendo e cosa vuole vedere, e tu clicchi Consenti. Google dà allora al sito un lasciapassare di lunga durata (il cosiddetto refresh token, o token di aggiornamento) così può tornare senza chiedertelo di nuovo. Il sito vede quello che vede il tuo account, entro i limiti di ciò che ha chiesto.
Service account: un nuovo collega con il suo badge
Ora pensa di assumere un assistente con il suo badge aziendale. All'inizio non ha accesso a niente. Condividi con lui una cartella, come faresti con un collega, ed è l'unica cosa che può aprire. Un service account funziona così: è un'identità Google per il software, con un suo indirizzo email (che termina con iam.gserviceaccount.com). La guida di Google spiega che puoi condividere file e cartelle con l'indirizzo email del service account dalla normale interfaccia di condivisione, come con qualsiasi utente. Nessuno accede e non c'è nessuna schermata di approvazione.
Perché i collegamenti a Google Drive dei siti scadono
Se hai mai visto un plugin Drive chiederti di "ricollegarti" ogni settimana, o mostrare un errore come invalid_grant, di solito la causa è il lasciapassare OAuth, non il plugin.
Molti plugin ti chiedono di creare una tua app Google: un progetto in Google Cloud con una schermata di consenso, un client ID, un indirizzo di reindirizzamento e un elenco di utenti di test. Una nuova app parte con lo stato di pubblicazione Testing (test). La documentazione di Google è chiara: per un'app in stato di test viene emesso un token di aggiornamento che scade dopo 7 giorni, a meno che l'app non chieda solo le informazioni di base del profilo. Leggere Drive non rientra nelle informazioni di base del profilo, quindi il lasciapassare smette di funzionare una settimana dopo il collegamento.
Far uscire l'app dalla fase di test (il pulsante Publish app nella pagina Audience della console di Google) toglie il limite dei 7 giorni, ma apre il tema successivo: la verifica. Anche il lasciapassare di un'app pubblicata può smettere di funzionare per altri motivi che Google elenca:
- la persona revoca l'accesso dell'app dal suo account Google;
- il lasciapassare non viene usato per sei mesi;
- l'account ha raggiunto il limite di lasciapassare attivi fissato da Google;
- un amministratore di Google Workspace limita l'app per l'organizzazione.
C'è anche un aspetto umano. Un collegamento OAuth è legato all'account di una persona. Se il collega che ha cliccato Consenti se ne va e il suo account viene chiuso, il sito perde l'accesso insieme a lui.
Perché Google chiede la verifica
Quando un'app chiede l'accesso, indica uno o più scope (ambiti): l'ampiezza dell'accesso che vuole. Google divide gli scope in non sensibili, sensibili e con restrizioni. Per Drive, gli scope che leggono tutto il Drive di una persona, compreso quello di sola lettura, sono classificati come scope con restrizioni.
Un'app pubblicata che usa scope con restrizioni e si rivolge al pubblico deve superare la verifica degli scope con restrizioni di Google. Se i dati passano da un server, come succede con un sito web, Google richiede anche una valutazione di sicurezza fatta da un valutatore indipendente, da ripetere almeno ogni 12 mesi. Google avverte che il processo può richiedere diverse settimane.
Finché un'app non è verificata, chi accede vede un avviso che Google non l'ha verificata, e l'app è limitata a 100 utenti. Google consente un'app non verificata per uso personale da parte di meno di 100 persone, quindi il proprietario di un sito può superare l'avviso per la propria app. Funziona, ma non è qualcosa da consegnare a un cliente.
Per questo i plugin Drive seguono di solito una di tre strade:
- L'app verificata di chi produce il plugin. Clicchi Accedi con Google e approvi l'app del produttore. Nessun lavoro su Google Cloud per te, ma dai a quell'app l'accesso al tuo Drive tramite il tuo account.
- La tua app OAuth. Crei tu l'app in Google Cloud. Se resta in fase di test scade ogni settimana; se la pubblichi mostra l'avviso di app non verificata.
- Un service account. Nessun accesso e nessuna schermata di consenso, quindi niente di quanto detto sopra si applica.
Esiste anche uno scope ristretto, spesso chiamato "drive.file", che Google classifica come non sensibile. Copre solo i file specifici che una persona apre o crea con quell'app, quindi è adatto agli strumenti che salvano o scelgono singoli file, non a una pagina che deve mostrare tutto quello che aggiungi a una cartella.
Cosa cambia con un service account
Con un service account il sito ha una sua identità, e decidi tu cosa vede condividendo le cartelle. Questo cambia diverse cose in un colpo solo.
- Nessuna scadenza settimanale. Il collegamento usa un file chiave, non un accesso. Google dichiara che, per impostazione predefinita, le chiavi dell'account di servizio non scadono mai. La chiave smette di funzionare se la elimini in Google Cloud, o se la tua organizzazione ha impostato una durata massima delle chiavi.
- Nessuna schermata di consenso, nessun utente di test, nessuna app da pubblicare. Nessuno approva niente, quindi Google non ha nessun avviso da mostrare.
- Un accesso che puoi vedere. Il service account vede solo le cartelle condivise con lui. Apri la finestra di condivisione della cartella su Drive e il suo indirizzo è in elenco come quello di qualsiasi persona. Toglilo e l'accesso finisce subito.
- Non legato a una persona. Il personale può cambiare; il sito mantiene la sua identità.
Non è privo di compromessi. Il file chiave è una password: chiunque lo abbia può leggere quello che legge il service account, quindi non va mai mandato via email né lasciato in una cartella pubblica. Configurarlo richiede una decina di minuti nella console Google Cloud. E in Google Workspace due impostazioni dell'organizzazione possono mettersi di mezzo: le organizzazioni Google Cloud create dal 3 maggio 2024 bloccano di default la creazione delle chiavi, e alcune organizzazioni vietano la condivisione con indirizzi esterni al dominio. In entrambi i casi un amministratore può fare un'eccezione.

Funzionano anche i Drive condivisi. Puoi aggiungere l'indirizzo del service account come membro del Drive condiviso, oppure condividere con lui una singola cartella al suo interno.
Google Drive API, service account o OAuth: il confronto
| App verificata del produttore del plugin | La tua app OAuth | Service account | |
|---|---|---|---|
| Chi accede | Tu, con il tuo account Google | Tu, con il tuo account Google | Nessuno |
| Può interrompersi da solo | Revoca, 6 mesi senza uso, criteri dell'amministratore | Dopo 7 giorni in fase di test, più gli stessi motivi | No, solo se elimini la chiave o togli la condivisione della cartella |
| Schermata di avviso di Google | No | Sì, finché Google non la verifica | Nessuna schermata |
| Cosa può vedere | Quello che l'app ha chiesto nel tuo Drive | Quello che l'app ha chiesto nel tuo Drive | Solo le cartelle condivise con lui |
| Il tuo lavoro di configurazione | Un clic | Schermata di consenso, client ID, indirizzo di reindirizzamento, utenti di test | Un progetto, un file chiave, una condivisione |
| Ideale per | Collegamenti rapidi quando ti fidi del produttore | Sviluppatori che provano i propri strumenti | Siti che mostrano i tuoi file ai tuoi utenti |
Quale dei due deve usare il tuo sito
OAuth è lo strumento giusto quando ogni visitatore deve raggiungere il proprio Drive: per esempio un modulo in cui le persone scelgono un file dal loro account Google. Solo la persona può dare quel permesso, quindi un service account non può sostituirlo.
Un service account è la scelta migliore quando il sito mostra i tuoi file ai tuoi utenti: un'area clienti, un'area rivenditori, una pagina di documenti per il personale. Qui il sito ha bisogno di un collegamento stabile a poche cartelle, e chi vede cosa lo decidono gli accessi del tuo sito, non Google.
È la scelta che abbiamo fatto per Google Drive Portal. Si collega solo con un service account, quindi non c'è nessun indirizzo di reindirizzamento da copiare, nessuna schermata di consenso, nessun utente di test e nessuna app da pubblicare o far verificare. La guida al collegamento ti accompagna tra progetto, chiave e condivisione, e la pagina Risolvi i problemi di collegamento spiega ogni messaggio in parole semplici. Per vedere come si inserisce in una configurazione reale, leggi come creare un'area riservata clienti con Google Drive.
In breve
OAuth prende in prestito l'accesso di una persona. Con una tua app Google scade ogni 7 giorni finché è in fase di test, e una volta pubblicata mostra un avviso finché Google non la verifica, un processo che per l'accesso completo a Drive comprende una valutazione di sicurezza annuale. L'app verificata del produttore di un plugin evita tutto questo, ma il collegamento resta legato all'account di una persona.
Un service account dà al sito una sua identità che vede solo quello che condividi, non scade per impostazione predefinita e non richiede nessuna schermata di verifica. In cambio hai un file chiave da custodire e una breve configurazione in Google Cloud. Per un sito che mostra le tue cartelle Drive ai clienti o al personale, di solito è la scelta più tranquilla. Se devi solo mostrare una cartella pubblica, forse non ti serve nessuno dei due: leggi come incorporare una cartella Google Drive in WordPress.
Domande frequenti
Perché il mio plugin Google Drive si scollega ogni 7 giorni?
Molto probabilmente il plugin usa una app Google che hai creato tu e che è ancora nello stato di pubblicazione Testing. Google fa scadere dopo 7 giorni i lasciapassare delle app in fase di test, quindi devi ricollegarti ogni settimana.
La chiave di un service account scade?
Non per impostazione predefinita. Continua a funzionare finché non la elimini in Google Cloud, a meno che la tua organizzazione non abbia fissato una durata massima delle chiavi.
Un service account richiede la verifica dell'app da parte di Google?
La verifica delle app di Google riguarda la schermata in cui le persone accedono e approvano un'app. Un service account non ha né accesso né schermata di approvazione: gli dai l'accesso condividendo le cartelle con il suo indirizzo.
Un service account può vedere tutto il mio Google Drive?
No. All'inizio non ha accesso a niente e vede solo i file, le cartelle e i Drive condivisi che condividi con il suo indirizzo email. Togli la condivisione di una cartella e perde l'accesso.

