Autenticare e autorizzare le app di Chat e le richieste dell'API Google Chat

Autenticazione e autorizzazione sono meccanismi utilizzati rispettivamente per verificare l'identità e l'accesso alle risorse. Questo documento illustra il funzionamento dell'autenticazione e dell'autorizzazione per le app Chat e le richieste dell'API Chat.

Panoramica della procedura

Il seguente diagramma mostra i passaggi generali di autenticazione e autorizzazione per Google Chat:

Passaggi di alto livello per l'autenticazione e l'autorizzazione di Google Chat
Figura 1. Passaggi di alto livello per l'autenticazione e l'autorizzazione di Google Chat.

  1. Configura un progetto Google Cloud, abilita l'API Chat e configura l'app Chat: durante lo sviluppo, crei un progetto Google Cloud. Nel progetto Google Cloud, puoi abilitare l'API Chat, configurare l'app Chat e impostare l'autenticazione. Per saperne di più, consulta Sviluppare su Google Workspace e Creare un'app di Chat.

  2. Chiama l'API Chat: quando l'app chiama l'API Chat, invia le credenziali di autenticazione all'API Chat. Se la tua app si autentica con un account di servizio, le credenziali vengono inviate come parte del codice dell'app. Se la tua app richiede di chiamare l'API Chat utilizzando l'autenticazione di un utente che non è ancora stata concessa, chiede all'utente di accedere.

  3. Richiedi risorse: l'app richiede l'accesso con gli ambiti da te specificati durante la configurazione dell'autenticazione.

  4. Chiedi il consenso:se la tua app si sta autenticando come utente, Google mostra una schermata per il consenso OAuth in modo che l'utente possa decidere se concedere all'app l'accesso ai dati richiesti. L'autenticazione con un account di servizio non richiede il consenso dell'utente.

  5. Invia una richiesta approvata per le risorse: se l'utente acconsente agli ambiti di autorizzazione, l'app raggruppa le credenziali e gli ambiti approvati dall'utente in una richiesta. La richiesta viene inviata al server di autorizzazione di Google per ottenere un token di accesso.

  6. Google restituisce un token di accesso: il token di accesso contiene un elenco degli ambiti concessi. Se l'elenco degli ambiti restituito è più restrittivo di quelli richiesti, l'app disattiva tutte le funzionalità limitate dal token.

  7. Accedi alle risorse richieste: la tua app utilizza il token di accesso di Google per invocare l'API Chat e accedere alle risorse dell'API Chat.

  8. Ricevi un token di aggiornamento (facoltativo): se la tua app deve accedere all'API Google Chat oltre la durata di un singolo token di accesso, può ottenere un token di aggiornamento. Per ulteriori informazioni, consulta Utilizzare OAuth 2.0 per accedere alle API di Google.

  9. Richiedi altre risorse: se l'app ha bisogno di un maggiore accesso, chiede all'utente di concedere nuovi ambiti, generando una nuova richiesta per ottenere un token di accesso (passaggi 3-6).

Quando le app di chat richiedono l'autenticazione

Le app di chat possono inviare messaggi in risposta a un'interazione dell'utente o in modo asincrono. Possono anche completare attività per conto di un utente, ad esempio creare uno spazio di Chat o recuperare un elenco di persone in uno spazio di Chat.

Le app di chat non richiedono l'autenticazione per rispondere a un'interazione dell'utente, a meno che l'app Chat non chiami l'API Chat o un'altra API di Google durante l'elaborazione della risposta.

Per inviare messaggi asincroni o eseguire attività per conto di un utente, le app di Chat inviano richieste REST all'API Chat, che richiedono autenticazione e autorizzazione.

Le risposte alle interazioni degli utenti non richiedono l'autenticazione

Le app Google Chat non devono autenticarsi come utente o un'app di Chat per ricevere e rispondere in modo sincrono agli eventi di interazione.

Le app Google Chat ricevono eventi di interazione ogni volta che un utente interagisce o chiama un'app di Chat, inclusi:

  • Un utente invia un messaggio a un'app di chat.
  • Un utente @menziona un'app di Chat.
  • Un utente richiama uno dei comandi slash dell'app Chat.

Il seguente diagramma mostra una sequenza di richiesta/risposta tra un utente di Chat e l'app Chat:

Non è richiesta alcuna autorizzazione per gli eventi di interazione con l'app di Chat
Figura 2. Gli eventi di interazione con l'app di Chat non richiedono l'autenticazione.

  1. L'utente invia un messaggio all'app Chat in Google Chat.
  2. Google Chat inoltra il messaggio all'app.
  3. L'app riceve il messaggio, lo elabora e restituisce una risposta a Google Chat.
  4. Google Chat mostra la risposta per l'utente o in uno spazio.

Questa sequenza si ripete per ogni evento di interazione con l'app di Chat.

I messaggi asincroni richiedono l'autenticazione

I messaggi asincroni si verificano quando un'app di Chat invia una richiesta all'API Chat, che richiede autenticazione e autorizzazione.

Chiamando l'API Chat, le app di Chat possono pubblicare messaggi in Google Chat o completare attività e accedere ai dati per conto di un utente. Ad esempio, dopo aver rilevato un'interruzione del server, un'app Chat può chiamare l'API Chat per:

  • Crea uno spazio di Chat dedicato all'analisi e alla risoluzione dell'interruzione.
  • Aggiungi persone allo spazio di Chat.
  • Pubblica un messaggio nello spazio di Chat per fornire dettagli sull'interruzione.

Il seguente diagramma mostra una sequenza di messaggi asincrona tra un'app Chat e uno spazio Chat:

Autenticazione richiesta per i messaggi asincroni
Figura 3. I messaggi asincroni richiedono l'autenticazione.

  1. Un'app Chat crea un messaggio chiamando l'API Chat utilizzando il metodo spaces.messages.create e include le credenziali utente nella richiesta HTTP.
  2. Google Chat autentica l'app Chat con l'account di servizio o le credenziali utente.
  3. Google Chat mostra il messaggio dell'app in uno spazio Chat specificato.

Ambiti API Chat

Configura la schermata per il consenso OAuth e scegli gli ambiti per definire quali informazioni mostrare a utenti e revisori di app, quindi registra l'app per poterla pubblicare in un secondo momento.

Per definire il livello di accesso concesso alla tua app, devi identificare e dichiarare gli ambiti di autorizzazione. Un ambito di autorizzazione è una stringa URI OAuth 2.0 che contiene il nome dell'app Google Workspace, il tipo di dati a cui accede e il livello di accesso.

Ambiti non sensibili

Codice ambito Descrizione
https://www.googleapis.com/auth/chat.bot

Consente alle app Chat di visualizzare le chat e inviare messaggi.

Questo ambito supporta solo l'autenticazione delle app con gli account di servizio. Non puoi eseguire l'autenticazione con credenziali utente o con la delega a livello di dominio utilizzando questo ambito.

Ambiti sensibili

Codice ambito Descrizione
https://www.googleapis.com/auth/chat.spaces Creare conversazioni e spazi e visualizzare o modificare metadati (incluse le impostazioni della cronologia e di accesso) in Chat.
https://www.googleapis.com/auth/chat.spaces.create Creare nuove conversazioni in Chat.
https://www.googleapis.com/auth/chat.spaces.readonly Visualizzare la chat e gli spazi in Chat.
https://www.googleapis.com/auth/chat.memberships Visualizzare, aggiungere, aggiornare e rimuovere membri dalle conversazioni in Chat.
https://www.googleapis.com/auth/chat.memberships.app Aggiungersi e rimuoversi dalle conversazioni in Google Chat.
https://www.googleapis.com/auth/chat.memberships.readonly Visualizzare i membri nelle conversazioni di Chat.
https://www.googleapis.com/auth/chat.messages.create Scrivi e invia messaggi in Chat.
https://www.googleapis.com/auth/chat.messages.reactions Visualizza, aggiungi ed elimina le reazioni ai messaggi in Chat.
https://www.googleapis.com/auth/chat.messages.reactions.create Aggiungere reazioni a un messaggio in Chat.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Visualizzare le reazioni a un messaggio in Chat.
https://www.googleapis.com/auth/chat.users.readstate Visualizzare e modificare l'ora dell'ultima lettura per le conversazioni di Chat.
https://www.googleapis.com/auth/chat.users.readstate.readonly Visualizzare l'ora dell'ultima lettura delle conversazioni di Chat.
https://www.googleapis.com/auth/chat.admin.spaces.readonly Visualizzare la chat e gli spazi di proprietà del dominio dell'amministratore in Chat.
https://www.googleapis.com/auth/chat.admin.spaces Visualizzare o modificare la chat e gli spazi di proprietà del dominio dell'amministratore in Chat.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Visualizzare i membri e i gestori nelle conversazioni di proprietà del dominio dell'amministratore in Chat.
https://www.googleapis.com/auth/chat.admin.memberships Visualizzare, aggiungere, aggiornare e rimuovere membri e gestori nelle conversazioni di proprietà del dominio dell'amministratore in Chat.
https://www.googleapis.com/auth/chat.app.spaces

Creare conversazioni e spazi e visualizzare o aggiornare i metadati (incluse le impostazioni della cronologia e di accesso) in Chat. Richiede l'approvazione dell'amministratore.

Questo ambito supporta solo l'autenticazione delle app con gli account di servizio. Non puoi eseguire l'autenticazione con credenziali utente o con la delega a livello di dominio utilizzando questo ambito.

https://www.googleapis.com/auth/chat.app.spaces.create

Creare nuove conversazioni e nuovi spazi in Chat. Richiede l'approvazione dell'amministratore.

Questo ambito supporta solo l'autenticazione delle app con gli account di servizio. Con questo ambito non puoi autenticarti con le credenziali utente o con la delega a livello di dominio.

https://www.googleapis.com/auth/chat.app.memberships

Visualizzare, aggiungere, aggiornare e rimuovere membri dalle conversazioni e dagli spazi in Chat. È necessaria l'approvazione dell'amministratore.

Questo ambito supporta solo l'autenticazione delle app con gli account di servizio. Non puoi eseguire l'autenticazione con credenziali utente o con la delega a livello di dominio utilizzando questo ambito.

https://www.googleapis.com/auth/chat.customemojis Visualizzare, creare ed eliminare emoji personalizzate in Chat.
https://www.googleapis.com/auth/chat.customemojis.readonly Visualizzare emoji personalizzate in Chat.
https://www.googleapis.com/auth/chat.users.spacesettings Visualizzare e aggiornare le impostazioni dello spazio utente di Chat.

Visualizza le API delle impostazioni utente dello spazio: getSpaceNotificationSetting, updateSpaceNotificationSetting.

Ambiti con restrizioni

Codice ambito Descrizione
https://www.googleapis.com/auth/chat.delete Eliminare conversazioni e spazi e rimuovere l'accesso ai file associati in Chat.
https://www.googleapis.com/auth/chat.import Importare spazi, messaggi e abbonamenti in Chat. Per maggiori informazioni, vedi Autorizzare le app di Chat a importare dati
https://www.googleapis.com/auth/chat.messages Visualizza, scrivi, invia, aggiorna ed elimina messaggi e aggiungi, visualizza ed elimina reazioni ai messaggi.
https://www.googleapis.com/auth/chat.messages.readonly Visualizzare messaggi e reazioni in Chat.
https://www.googleapis.com/auth/chat.admin.delete Eliminare le conversazioni e gli spazi di proprietà del dominio dell'amministratore e rimuovere l'accesso ai file associati in Chat.
https://www.googleapis.com/auth/chat.app.delete

Eliminare conversazioni e spazi e rimuovere l'accesso ai file associati in Chat. È necessaria l'approvazione dell'amministratore.

Questo ambito supporta solo l'autenticazione delle app con gli account di servizio. Con questo ambito non puoi autenticarti con le credenziali utente o con la delega a livello di dominio.

Gli ambiti nelle tabelle precedenti ne indicano la sensibilità, in base alle seguenti definizioni:

Se la tua app richiede l'accesso ad altre API di Google, puoi aggiungere anche questi ambiti. Per ulteriori informazioni sugli ambiti delle API di Google, consulta la pagina relativa all'utilizzo di OAuth 2.0 per accedere alle API di Google.

Per scoprire di più sugli ambiti per le API di Google Workspace, consulta Configurare la schermata per il consenso OAuth e scegliere gli ambiti.

Tipi di autenticazione richiesti

Esistono due modi in cui le app di Chat possono autenticarsi e autorizzarsi con l'API Chat:

Autenticazione degli utenti
L'autenticazione utente consente a un'app di Chat di accedere ai dati utente e di completare azioni per conto dell'utente. Gli ambiti OAuth specificano i dati e le azioni autorizzati. A meno che l'app Chat non sia stata installata dall'amministratore o abbia ricevuto una delega a livello di dominio, la prima volta che l'app Chat esegue un'azione per conto di un utente, quest'ultimo deve autorizzare l'app Chat utilizzando la schermata per il consenso OAuth.
Autenticazione delle app

L'autenticazione dell'app consente a un'app Chat di utilizzare le credenziali dell'account di servizio, di accedere ai dati e di completare le azioni come se fosse l'app stessa. Poiché l'app Chat utilizza le proprie credenziali per accedere e utilizzare le risorse, gli utenti finali non devono approvare le chiamate API dell'app Chat e non puoi aggiungere alla schermata di consenso OAuth gli ambiti di autorizzazione OAuth che supportano l'autorizzazione dell'app.

Due tipi di ambiti di autorizzazione OAuth supportano l'autenticazione delle app:

  • https://www.googleapis.com/auth/chat.bot: L'app Chat può chiamare i metodi dell'API Google Chat che supportano questo ambito di autorizzazione per creare, aggiornare, recuperare, elencare o eliminare le risorse a cui ha accesso, come i messaggi negli spazi a cui gli utenti finali aggiungono la tua app Chat. L'app Chat può concedersi autonomamente questo ambito di autorizzazione, senza alcuna autorizzazione di amministratore o utente finale.
  • https://www.googleapis.com/auth/chat.app.* (Anteprima per gli sviluppatori): l'utilizzo di questi ambiti richiede l'approvazione una tantum dell'amministratore. Per ricevere l'approvazione dell'amministratore, prepara lo service account dell'app Chat per ricevere l'approvazione dell'amministratore creando un client OAuth compatibile con Google Workspace Marketplace e configurando l'app nell'SDK di Google Workspace Marketplace. Questi ambiti consentono all'app Chat di chiamare metodi specifici dell'API Google Chat. Ad esempio, chat.app.spaces.create consente alle app di creare gli spazi di Chat.

Se un metodo supporta l'autenticazione sia dell'utente che dell'app, l'API Chat restituisce risultati diversi in base al tipo di autenticazione utilizzato:

  • Con l'autenticazione delle app, i metodi restituiscono solo le risorse accessibili all'app Chat.
  • Con l'autenticazione utente, i metodi restituiscono solo le risorse a cui l'utente può accedere.

Ad esempio, l'uso del metodo spaces.list() con l'autorizzazione app restituisce l'elenco degli spazi di cui l'app Chat è membro. La chiamata di spaces.list() con l'autorizzazione dell'utente restituisce l'elenco di spazi di cui l'utente è membro. In pratica, potresti utilizzare entrambi i tipi di autenticazione quando chiami l'API Chat, a seconda del design e delle funzionalità della tua app Chat.

Per le chiamate asincrone all'API Chat

La tabella seguente elenca i metodi dell'API Chat e i relativi ambiti di autorizzazione supportati:

Metodo Autenticazione utente supportata Autenticazione app supportata Ambiti di autorizzazione supportati
Spazi  
Creare uno spazio Con l'autenticazione utente:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Con l'autenticazione dell'app e l'approvazione dell'amministratore (disponibile in Anteprima per sviluppatori):
  • chat.app.spaces.create
  • chat.app.spaces
Configurare uno spazio Con l'autenticazione utente:
  • chat.spaces.create
  • chat.spaces
Creare uno spazio Con l'autenticazione utente:
  • chat.spaces.readonly
  • chat.spaces
Con l'autenticazione utente mediante i privilegi di amministratore:
  • chat.admin.spaces.readonly
Con l'autenticazione app:
  • chat.bot
Con l'autenticazione dell'app e l'approvazione dell'amministratore (disponibile in Anteprima per sviluppatori):
  • chat.app.spaces
Elenco spazi Con l'autenticazione utente:
  • chat.spaces.readonly
  • chat.spaces
Con l'autenticazione app:
  • chat.bot
Cerca spazi Con l'autenticazione utente che utilizza i privilegi amministrativi:
  • chat.admin.spaces.readonly
Aggiornare uno spazio Con l'autenticazione utente:
  • chat.spaces
  • chat.import
Con l'autenticazione utente mediante i privilegi di amministratore:
  • chat.admin.spaces
Con l'autenticazione delle app e l'approvazione dell'amministratore (disponibile nell'Anteprima per gli sviluppatori):
  • chat.app.spaces
Eliminare uno spazio Con l'autenticazione utente:
  • chat.delete
  • chat.import
Con l'autenticazione utente mediante i privilegi di amministratore:
  • chat.admin.delete
Con l'autenticazione delle app e l'approvazione dell'amministratore (disponibile nell'Anteprima per gli sviluppatori):
  • chat.app.delete
Completare il processo di importazione di uno spazio Con l'autenticazione utente:
  • chat.import
Trovare un messaggio diretto Con l'autenticazione utente:
  • chat.spaces.readonly
  • chat.spaces
Con l'autenticazione app:
  • chat.bot
Membri  
Creare un membro Con l'autenticazione utente:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Con l'autenticazione utente che utilizza i privilegi amministrativi:
  • chat.admin.memberships
Con l'autenticazione delle app e l'approvazione dell'amministratore (disponibile nell'Anteprima per gli sviluppatori):
  • chat.app.memberships
Acquistare un abbonamento Con l'autenticazione utente:
  • chat.memberships.readonly
  • chat.memberships
Con l'autenticazione app:
  • chat.bot
Con l'autenticazione utente mediante i privilegi di amministratore:
  • chat.admin.memberships.readonly
Membri dell'elenco Con l'autenticazione utente:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Con l'autenticazione app:
  • chat.bot
Con l'autenticazione utente che utilizza i privilegi amministrativi:
  • chat.admin.memberships.readonly
Eliminare un membro Con l'autenticazione utente:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Con l'autenticazione utente mediante i privilegi di amministratore:
  • chat.admin.memberships
Con l'autenticazione delle app e l'approvazione dell'amministratore (disponibile nell'Anteprima per gli sviluppatori):
  • chat.app.memberships
Aggiornare un membro Con l'autenticazione utente:
  • chat.memberships
  • chat.import
Con l'autenticazione utente mediante i privilegi di amministratore:
  • chat.admin.memberships
Con l'autenticazione delle app e l'approvazione dell'amministratore (disponibile nell'Anteprima per gli sviluppatori):
  • chat.app.memberships
Messaggi  
Creare un messaggio Con l'autenticazione utente:
  • chat.messages.create
  • chat.messages
  • chat.import
Con l'autenticazione app:
  • chat.bot
Ricevere un messaggio Con l'autenticazione utente:
  • chat.messages.readonly
  • chat.messages
Con l'autenticazione app:
  • chat.bot
Elenca messaggi Con l'autenticazione utente:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Aggiornare un messaggio Con l'autenticazione utente:
  • chat.messages
  • chat.import
Con l'autenticazione app:
  • chat.bot
Eliminare un messaggio Con l'autenticazione utente:
  • chat.messages
  • chat.import
Con l'autenticazione app:
  • chat.bot
Reazioni  
Creare una reazione Con l'autenticazione utente:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Elenco delle reazioni Con l'autenticazione utente:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Eliminare una reazione Con l'autenticazione utente:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Emoji personalizzate  
Creare un'emoji personalizzata Con l'autenticazione utente:
  • chat.customemojis
Eliminare un'emoji personalizzata Con l'autenticazione utente:
  • chat.customemojis
Ottieni un'emoji personalizzata Con l'autenticazione utente:
  • chat.customemojis
  • chat.customemojis.readonly
Elenco di emoji personalizzate Con l'autenticazione utente:
  • chat.customemojis
  • chat.customemojis.readonly
Contenuti multimediali e allegati  
Caricare contenuti multimediali come file allegati Con l'autenticazione utente:
  • chat.messages.create
  • chat.messages
  • chat.import
Scaricare contenuti multimediali Con l'autenticazione utente:
  • chat.messages.readonly
  • chat.messages
Con l'autenticazione app:
  • chat.bot
Ricevere un allegato di un messaggio Con l'autenticazione app:
  • chat.bot
Stati di lettura dell'utente
Ottenere lo stato di lettura dello spazio di un utente Con l'autenticazione utente:
  • chat.users.readstate
  • chat.users.readstate.readonly
Aggiornare lo stato di lettura dello spazio di un utente Con l'autenticazione utente:
  • chat.users.readstate
Ottenere lo stato di lettura dei thread di un utente Con l'autenticazione utente:
  • chat.users.readstate
  • chat.users.readstate.readonly
Impostazioni dello spazio utente
Ottenere l'impostazione di notifica dello spazio di un utente Con l'autenticazione utente:
  • chat.users.spacesettings
Aggiornare l'impostazione di notifica dello spazio di un utente Con l'autenticazione utente:
  • chat.users.spacesettings
Eventi di Space
Visualizza gli eventi nello spazio Con l'autenticazione utente, devi utilizzare un ambito basato sul tipo di evento:
  • Per gli eventi relativi ai messaggi:
    • chat.messages
    • chat.messages.readonly
  • Per gli eventi relativi alle reazioni:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • Per gli eventi relativi agli abbonamenti:
    • chat.memberships
    • chat.memberships.readonly
  • Per gli eventi relativi allo spazio:
    • chat.spaces
    • chat.spaces.readonly
Elenca eventi dello spazio Con l'autenticazione utente, devi utilizzare un ambito per ogni tipo di evento incluso nella richiesta:
  • Per gli eventi relativi ai messaggi:
    • chat.messages
    • chat.messages.readonly
  • Per gli eventi relativi alle reazioni:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • Per gli eventi relativi agli abbonamenti:
    • chat.memberships
    • chat.memberships.readonly
  • Per gli eventi relativi allo spazio:
    • chat.spaces
    • chat.spaces.readonly

Per gli eventi di interazione con l'app di Chat

La tabella seguente elenca i modi comuni con cui gli utenti interagiscono con le app di Chat e se l'autenticazione è richiesta o supportata:

Scenario Nessuna autenticazione richiesta Autenticazione utente supportata Autenticazione delle app supportata
Ricevi messaggi da:
Eventi di interazione con l'app Chat
Callback di Apps Script
Google Cloud Pub/Sub
Rispondi ai messaggi:
In modo sincrono, utilizzando un evento di interazione con l'app di Chat
In modo sincrono, utilizzando un valore restituito di callback di Apps Script
Inviare nuovi messaggi:
Con i webhook in arrivo