Il tipo di collegamento dell'account OAuth supporta due flussi OAuth 2.0 standard di settore: i flussi implicito e codice di autorizzazione. Nel flusso di codice implicito, Google apre l'endpoint di autorizzazione nel browser dell'utente. Una volta eseguito l'accesso, restituisci a Google un token di accesso di lunga durata. Questo token di accesso viene quindi incluso in ogni richiesta inviata dall'Assistente all'Azione.
OAuth è la soluzione consigliata per il collegamento degli account se si applica quanto segue:
- Disponi di un'implementazione esistente di un server OAuth 2.0 e non puoi estendere l'endpoint di scambio di token per aggiungere il supporto dei protocolli di Google per il collegamento automatico e la creazione di account da un token ID (ad esempio, aggiungi i parametri
intent=get
eintent=create
nelle richieste a questo endpoint).
Per verificare che OAuth sia la soluzione giusta per te, consulta la pagina Scegliere il tipo di collegamento dell'account.
Termini chiave
Prima di leggere il funzionamento di OAuth, leggi attentamente i seguenti termini:
- Intent di supporto per l'accesso all'account:un intent helper che chiami per richiedere
un flusso di collegamento dell'account dall'assistente. Per ulteriori informazioni, consulta la pagina relativa all'accesso all'account.
- Stringa di contesto: una stringa personalizzata da aggiungere all'intent dell'helper per l'accesso all'account che indica all'utente perché devi collegare l'account.
Flusso del codice di autorizzazione:durante questo flusso OAuth 2.0, Google apre il tuo endpoint di autorizzazione nel browser dell'utente. Se l'accesso va a buon fine, il servizio crea un codice di autorizzazione e lo restituisce a Google. Google invia questo codice di autorizzazione all'endpoint di scambio di token, che verifica l'autenticità del codice e restituisce un token di accesso e un token di aggiornamento.
Questo flusso richiede due endpoint:
- Endpoint di autorizzazione: endpoint responsabile di trovare
o ottenere il consenso degli utenti per l'accesso ai dati. Questo endpoint svolge le seguenti operazioni:
- Presenta la UI di accesso agli utenti che non hanno ancora eseguito l'accesso.
- Registra il consenso all'accesso richiesto sotto forma di codice di autorizzazione di breve durata.
- Endpoint di scambio di token: questo endpoint viene utilizzato per ottenere stringhe criptate chiamate token che autorizzano l'utente dell'azione ad accedere al servizio. Questo endpoint è responsabile di due tipi di scambi:
- Scambia un codice di autorizzazione con un token di aggiornamento di lunga durata e un token di accesso di breve durata. Questo scambio avviene quando l'utente segue il flusso di collegamento dell'account.
- Scambia un token di aggiornamento di lunga durata con un token di accesso di breve durata. Questo scambio si verifica quando Google ha bisogno di un nuovo token di accesso perché quello è scaduto.
- Endpoint di autorizzazione: endpoint responsabile di trovare
o ottenere il consenso degli utenti per l'accesso ai dati. Questo endpoint svolge le seguenti operazioni:
Flusso di codice implicito: durante questo flusso OAuth 2.0, Google apre il tuo endpoint di autorizzazione nel browser dell'utente. Se l'accesso va a buon fine, restituisci a Google un token di accesso di lunga durata. che viene quindi incluso in ogni richiesta inviata dall'Assistente all'Azione. Questo flusso richiede solo un endpoint di autorizzazione.
Token di accesso: un token che autorizza il tuo servizio ad accedere a parti dei dati di un utente. I token di accesso sono associati a ogni singolo utente e non devono essere decifrabili.
Token di aggiornamento: token che viene scambiato con un nuovo token di accesso dopo la scadenza di un token di accesso di breve durata.
Come funziona
Questa sezione descrive il flusso generale per il codice di autorizzazione OAuth e i flussi impliciti. La sezione seguente, Flussi OAuth, descrive i vari flussi che possono essere eseguiti con OAuth.
Il flusso del codice di autorizzazione può essere riassunto come segue:
- L'Azione chiede all'utente se vuole collegare il suo account al tuo servizio.
- Dopo che l'utente accetta di collegare gli account, Google apre il tuo endpoint di autorizzazione nel browser dell'utente. Se il flusso per un'Azione fosse avviato su un dispositivo solo vocale, Google trasferirà l'esecuzione su un telefono.
- L'utente esegue l'accesso (se non ha già eseguito l'accesso) e concede a Google l'autorizzazione per accedere ai propri dati con la tua API (se non ha già concesso l'autorizzazione).
- Il servizio crea un codice di autorizzazione e lo restituisce a Google reindirizzando il browser dell'utente a Google con il codice di autorizzazione allegato alla richiesta.
- Google invia il codice di autorizzazione all'endpoint di scambio di token che verifica l'autenticità del codice e restituisce un token di accesso e un token di aggiornamento. Il token di accesso è un token di breve durata che il tuo servizio accetta come credenziali per accedere alle API. Il token di aggiornamento è un token di lunga durata che Google può archiviare e utilizzare per acquisire nuovi token di accesso alla scadenza.
- Dopo che l'utente ha completato il flusso di collegamento dell'account, ogni richiesta successiva inviata dall'assistente al webhook di fulfillment contiene un token di accesso.
Il flusso di codice implicito può essere riepilogato come segue:
- L'Azione chiede all'utente se vuole collegare il suo account al tuo servizio.
- Dopo che l'utente accetta di collegare gli account, Google apre il tuo endpoint di autorizzazione nel browser dell'utente.
- L'utente esegue l'accesso (se non ha già eseguito l'accesso) e concede a Google l'autorizzazione per accedere ai propri dati con la tua API (se non ha già concesso l'autorizzazione).
- Il servizio crea un token di accesso e lo restituisce a Google reindirizzando il browser dell'utente a Google con il token di accesso associato alla richiesta.
- Dopo che l'utente ha completato il flusso di collegamento dell'account, Google chiama le API del tuo servizio e allega il token di accesso a ogni richiesta. Il servizio verifica che il token di accesso conceda a Google l'autorizzazione ad accedere all'API, quindi completa la chiamata API.
Il flusso di base del codice di autorizzazione è il seguente:
- L'Azione chiede all'utente se vuole collegare il suo account al tuo servizio.
- Dopo che l'utente accetta di collegare gli account, Google apre il tuo endpoint di autorizzazione nel browser dell'utente. Se il flusso per un'Azione fosse avviato su un dispositivo solo vocale, Google trasferirà l'esecuzione su un telefono.
- L'utente esegue l'accesso (se non ha già eseguito l'accesso) e concede a Google l'autorizzazione per accedere ai propri dati con la tua API (se non ha già concesso l'autorizzazione).
- Il servizio crea un codice di autorizzazione e lo restituisce a Google reindirizzando il browser dell'utente a Google con il codice di autorizzazione di breve durata allegato alla richiesta.
- Google invia il codice di autorizzazione all'endpoint di scambio di token che verifica l'autenticità del codice e restituisce un token di accesso e un token di aggiornamento. Il token di accesso è un token di breve durata che il tuo servizio accetta come credenziali per accedere alle API. Il token di aggiornamento è un token di lunga durata che Google può archiviare e utilizzare per acquisire nuovi token di accesso alla scadenza.
- Dopo che l'utente ha completato il flusso di collegamento dell'account, ogni richiesta successiva inviata dall'assistente al webhook di fulfillment contiene un token di accesso.
Flussi OAuth
Questa sezione esamina i vari flussi che possono essere eseguiti con OAuth.
Ogni flusso contiene i seguenti passaggi comuni dopo che l'utente richiama l'Azione:
Nel flusso precedente, chiami l'intent helper actions.intent.SIGN_IN
per avviare
il flusso di collegamento dell'account. L'assistente chiede all'utente se vuole collegare il suo account al tuo servizio e mostra una schermata con le autorizzazioni richieste. Quando l'utente acconsente, Google lo reindirizza all'endpoint di autorizzazione del tuo servizio nel browser. L'utente accede (o, a seconda della configurazione, crea un nuovo account) e concede all'azione l'autorizzazione ad accedere ai propri dati.
I flussi dopo questo punto differiscono a seconda che tu abbia implementato o meno il flusso implicito o il flusso del codice di autorizzazione. Questi flussi sono descritti nelle sezioni seguenti.
Flusso 1: l'utente accede con un flusso implicito
Dopo che l'utente accede e le sue credenziali sono state verificate, il servizio crea un token di accesso di lunga durata e lo restituisce a Google. A questo punto, l'identità dell'utente nell'Azione è collegata all'account con cui ha eseguito l'accesso e il token di accesso è associato a ogni chiamata API effettuata da Google alle API del tuo servizio.
Flusso 2: L'utente accede con il flusso del codice di autorizzazione
Dopo che l'utente esegue l'accesso e le sue credenziali sono state verificate, il servizio crea un codice di autorizzazione e lo restituisce a Google.
Questo codice di autorizzazione viene inviato all'endpoint di scambio di token, che restituisce sia un token di accesso sia un token di aggiornamento. A questo punto, l'identità dell'utente nell'Azione è collegata all'account con cui ha eseguito l'accesso e ogni richiesta successiva inviata dall'assistente al fulfillment contiene un token di accesso.