Guida al concetto di OAuth e Accedi con Google (Dialogflow)

Il tipo di collegamento OAuth e Accedi con Google aggiunge Accedi con Google oltre alle Collegamento dell'account basato su OAuth. Se utilizzi questo tipo di collegamento nell'Azione, il parametro inizia con Accedi con Google, che ti consente di verificare se l'account Google nel sistema sono presenti informazioni sul profilo. In caso contrario, verrà eseguito un flusso OAuth standard l'avvio delle operazioni. Se fornisci una combinazione di questi due tipi di collegamento, gli utenti possono creare link la propria identità nell'Azione con un Account Google o non Google. Se sceglie, può anche creare un nuovo account con il proprio profilo Google informazioni.

OAuth e Accedi con Google sono la soluzione consigliata per il collegamento dell'account se esiste una si applica quanto segue:

  • Un'azione si estende su più piattaforme (ad esempio, se le tue l'azione funziona con un'app per Android).
  • Hai già un sistema di autenticazione e vuoi consentire agli utenti di collegare le proprie identità ad account non Google. Ad esempio, se offri un programma fedeltà e vuole essere sicuro che l'utente non perda punti accumulati sull'account esistente.

Per verificare che OAuth e Accedi con Google siano la soluzione giusta per te, consulta le Pagina Scegli il tipo di collegamento dell'account.

Termini chiave

Prima di leggere come funzionano OAuth e Accedi con Google, acquisisci familiarità con con i seguenti termini:

  • Token ID Google:un'asserzione firmata dell'identità di un utente che contiene Le informazioni di base del profilo Google di un utente (nome, indirizzo email e immagine del profilo). Un token ID Google è un Token web JSON (JWT). Di seguito è riportato un esempio di token decodificato:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • Intento di aiutante per l'accesso all'account:un intent helper che chiami per richiedere un flusso di collegamento dell'account dall'assistente. Per ulteriori informazioni, vedi Accesso all'account.
    • Stringa di contesto:una stringa personalizzata che aggiungi all'account. intent helper per l'accesso che indichi all'utente perché vuoi effettuare il collegamento il proprio account.
  • Flusso del codice di autorizzazione: un flusso OAuth 2.0 che puoi implementare con OAuth + Accedi con Google. Questo flusso richiede due endpoint:
    • Endpoint di autorizzazione: l'endpoint che presenta l'interfaccia utente di accesso agli utenti che non hanno ancora effettuato l'accesso. Registra il consenso ha richiesto l'accesso sotto forma di codice di autorizzazione di breve durata.
    • Endpoint scambio di token: questo endpoint è responsabile di due tipi delle piattaforme di scambio pubblicitario:
        .
      1. 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 esegue la procedura di collegamento dell'account.
      2. Scambia un token di aggiornamento di lunga durata con un accesso di breve durata di accesso. Questo scambio avviene quando Google ha bisogno di un nuovo token di accesso perché quella era scaduta.
  • Flusso di codice implicito: un flusso OAuth 2.0 che puoi implementare con OAuth + Accedi con Google. Questo flusso richiede solo un endpoint di autorizzazione. Durante questo flusso, Google apre il tuo endpoint di autorizzazione nella del browser. Se l'accesso viene eseguito correttamente, restituisci un token di accesso di lunga durata alla in tutti i canali Google. Questo token di accesso è ora incluso in tutte le richieste inviate dal Assistente Google per la tua Azione.
  • Token di accesso:un token che autorizza il tuo servizio ad accedere a parti di un dati utente. I token di accesso sono associati a ogni singolo utente.
  • Token di aggiornamento:un token che viene scambiato con un nuovo token di accesso una volta token di accesso di breve durata è scaduto.

Prerequisiti

Per utilizzare il tipo di collegamento OAuth e Accedi con Google, devi disporre di quanto segue:

  • Un server OAuth 2.
  • Un endpoint di scambio di token

    L'endpoint di scambio di token deve essere esteso per aggiungere il supporto per protocolli per il collegamento automatico e la creazione di account da un token ID ad esempio aggiungendo i parametri intent=get e intent=create nelle richieste questo endpoint).

Come funziona

Questa sezione descrive il flusso generale per OAuth e Accedi con Google. La seguente sezione, Flussi OAuth e GSI, descrive i vari flussi che possono verificarsi in base a) se l'utente attiva o disattiva la creazione di account tramite comandi vocali e b) se utilizzi i comandi del codice di autorizzazione.

Il flusso di base è il seguente:

  1. L'azione chiede all'utente il consenso per accedere al suo profilo Google.
  2. Dopo che l'utente dà il consenso, l'azione riceve un token ID Google che contiene le informazioni del profilo Google dell'utente.
  3. Devi convalidare e decodificare il token per leggere i contenuti del profilo.
  4. L'Azione utilizza questo token per verificare se il profilo Google dell'utente nel tuo sistema.
    1. In questo caso, significa che l'utente ha già effettuato l'accesso al tuo sistema tramite l'Account Google e l'assistente collega l'identità dell'utente alla sua Account Google L'utente può continuare la conversazione con Assistente con il suo account collegato.
    2. In caso contrario, vedi il passaggio 5.
  5. L'utente può a) creare un nuovo account con il proprio profilo Google informazioni o b) accedere al sistema con un altro account. La le scelte dell'utente variano in base all'attivazione o alla disattivazione disattivare la creazione di account tramite comandi vocali. Se l'utente sceglie di accedere al tuo con un altro account, inizia il flusso OAuth standard.
  6. Dopo che l'utente ha creato un nuovo account o ha eseguito l'accesso con un fornitore diverso, il servizio restituisce un token di accesso a Google. (Se utilizzi flusso del codice di autorizzazione, il servizio restituisce anche un token di aggiornamento.)
  7. Ora l'utente può continuare la conversazione con l'assistente tramite account collegato.

Flussi OAuth e GSI

Questa sezione esamina i vari flussi che possono verificarsi con OAuth e GSI. Questi diagrammi esaminano i flussi che si verificano con il flusso del codice di autorizzazione. anziché il flusso di codice implicito, e supponiamo che tu stia usando Dialogflow come la soluzione di comprensione del linguaggio naturale per l'Azione.

Ogni flusso contiene questi passaggi comuni dopo che l'utente richiama l'azione:

Nella procedura precedente, chiami l'intent helper actions.intent.SIGN_IN con un la stringa di contesto che personalizzi. Questo intent chiede all'utente l'autorizzazione per accedere le informazioni del proprio profilo Google. Dopo che l'utente dà il consenso, l'assistente invia una richiesta contenente le informazioni del profilo per user@gmail.com.

I flussi dopo questo punto variano a seconda che tu abbia configurato o meno l'account il collegamento tramite comandi vocali e se le informazioni dell'utente esistono già nel tuo di un sistema operativo completo. Ciascuno di questi flussi è descritto nelle sezioni seguenti.

Flussi con creazione di account vocale attivata

Questa sezione descrive i flussi di collegamento degli account che possono verificarsi se attivi la creazione di account tramite comandi vocali.

Flusso 1: le informazioni dell'utente sono presenti nel sistema

In questo caso, l'utente rappresentato da user@gmail.com esiste nel tuo backend, quindi il tuo endpoint di scambio di token restituisce un token per l'utente. L'account dell'utente nell'Azione è ora collegata al suo Account Google. L'account dell'utente richiesta originale ("Ordina il solito") corrisponde alla richiesta personalizzata per intenzione order_drink. Il webhook gestisce quindi il completamento dell'intent corrispondente ed esegue query sul tuo database per l'ordine abituale di user@gmail.com. L'utente può quindi continuare conversazione con l'assistente.

Flusso 2: le informazioni dell'utente non esistono e l'utente crea l'account

Poiché hai attivato la creazione di account tramite comandi vocali, user@gmail.com no nel tuo backend, l'assistente chiede all'utente se vuole farlo una delle seguenti opzioni:

a) Creare un nuovo account sul sistema utilizzando i dati del suo profilo Google; che avviene tramite comandi vocali

b) Accedi al sistema con un altro account.

In questo caso, l'utente sceglie di creare un nuovo account tramite comandi vocali. Chiamate di Google l'endpoint di scambio di token del tuo servizio con una richiesta di creazione di un account. Questa richiesta contiene il token ID Google, che include i componenti necessari per creare un nuovo account. Puoi quindi utilizzare le informazioni di questo token (nome e indirizzo email dell'utente) per creare un account per l'utente.

Una volta creato l'account, il servizio restituisce un token di accesso e aggiorna token per l'account appena creato. L'identità dell'utente nell'azione è ora collegato al proprio Account Google. La richiesta originale dell'utente ("Ordina il mio solito") corrisponde all'intent personalizzato order_drink. Il tuo webhook gestisce quindi completamento dell'intent con corrispondenza ed eseguire query sul database Ordine abituale di user@gmail.com, che non esiste ancora perché l'utente è nuovo. L'Azione può quindi chiedere all'utente cosa vuole ordinare.

Flusso 3: le informazioni dell'utente non esistono e l'utente accede con un account diverso

Hai attivato la creazione di account tramite comandi vocali, quindi l'assistente chiede all'utente se che vogliono effettuare una delle seguenti operazioni:

a) Creare un nuovo account sul sistema utilizzando i dati del suo profilo Google; che avviene tramite comandi vocali

b) Accedi al sistema con un altro account.

In questo caso, l'utente sceglie di accedere con un altro account, che avvia il flusso OAuth standard. Se il flusso è iniziato su un dispositivo solo vocale, Google trasferisce l'esecuzione a un telefono. Google apre quindi l'endpoint di autorizzazione nel browser dell'utente e, a seconda del tuo configurazione, l'utente può scegliere se a) accedere al tuo servizio un account esistente che non utilizza la funzionalità Accedi con Google o b) creare un nuovo account utilizzando un altro provider. Per ulteriori informazioni sul flusso OAuth, consulta Guida al concetto di OAuth.

Dopo aver verificato le credenziali dell'utente, il servizio restituisce un token di accesso un token di aggiornamento a Google. L'identità dell'utente nell'azione è ora collegata a un account non Google. La richiesta originale dell'utente ("Ordina il mio solito") corrisponde personalizzato per l'intent order_drink. Il tuo webhook gestisce quindi il fulfillment l'intent con corrispondenza ed esegue query sul database in base all'ordine abituale di user@gmail.com, che non esiste ancora perché l'utente è nuovo. L'Azione può quindi chiedere all'utente ciò che vorrebbe ordinare o chiedigli di impostare l'ordine abituale.

Flusso con creazione di account vocale disattivata

Questa sezione descrive in dettaglio il flusso di collegamento dell'account che può verificarsi se disattivi la creazione di account tramite comandi vocali.

Flusso 4: le informazioni dell'utente non esistono

Non hai attivato la creazione di account tramite comandi vocali e l'utente non esiste nel tuo per avviare il flusso OAuth standard. L'assistente apre il tuo endpoint di autorizzazione nel browser dell'utente (se il flusso è iniziato su un dispositivo dispositivo, Google trasferisce l'esecuzione a un dispositivo con uno schermo). L'utente può scegliere di a) accedere con un altro fornitore, se si è registrato servizio con un altro account oppure b) creare un nuovo account con da un provider diverso. Per ulteriori informazioni sul flusso OAuth, consulta Guida al concetto di OAuth.

Dopo aver verificato le credenziali dell'utente, il servizio restituisce un token di accesso un token di aggiornamento a Google. L'identità dell'utente nell'azione è ora collegata a un account non Google. La richiesta originale dell'utente ("Ordina il mio solito") corrisponde personalizzato per l'intent order_drink. Il tuo webhook gestisce quindi il fulfillment l'intent con corrispondenza ed esegue query sul database in base all'ordine abituale di user@gmail.com, che non esiste ancora perché l'utente è nuovo. L'Azione può quindi chiedere all'utente di impostare il suo ordine abituale.