Questa guida spiega come configurare e utilizzare un account di servizio per accedere all'API Google Chat per conto di un'app di Chat. Innanzitutto, viene illustrato come creare un account di servizio. Poi, mostra come scrivere uno script che utilizza l'account di servizio per autenticarsi con l'API Chat e pubblicare un messaggio in uno spazio di Chat.
Quando viene eseguito l'autenticazione con un account di servizio, per ottenere dati su uno spazio di Chat o eseguire azioni al suo interno, le app di Chat devono essere membri dello spazio. Ad esempio, per elencare i membri di uno spazio o per creare un messaggio in uno spazio, l'app Chat deve essere un membro dello spazio. L'unica eccezione è quando un'app di chat crea uno spazio con autenticazione delle app, nel qual caso l'app crea lo spazio e poi diventa membro automaticamente.
I metodi dell'API Google Chat che supportano l'autorizzazione delle app con ambiti di autorizzazione
i cui nomi iniziano con https://www.googleapis.com/auth/chat.app.*
richiedono
l'approvazione dell'amministratore una tantum.
I metodi dell'API Google Chat che supportano l'autorizzazione delle app con l'ambito di autorizzazione https://www.googleapis.com/auth/chat.bot
non richiedono un'approvazione aggiuntiva. Gli ambiti di autorizzazione https://www.googleapis.com/auth/chat.app.*
sono disponibili in
Anteprima per sviluppatori.
Se la tua app di Chat deve accedere ai dati utente o eseguire azioni per conto di un utente, esegui l'autenticazione come utente. Se sei un amministratore di dominio, puoi concedere la delega dell'autorità a livello di dominio per autorizzare l'account di servizio di un'app di Chat ad accedere ai dati dei tuoi utenti senza che sia necessario il consenso di ogni utente. Per maggiori informazioni, vedi Eseguire l'autenticazione e l'autorizzazione utilizzando la delega a livello di dominio.
Per scoprire di più su quando le app di Chat richiedono l'autenticazione e su quale tipo di autenticazione utilizzare, consulta Tipi di autenticazione richiesti nella panoramica dell'autenticazione e dell'autorizzazione dell'API Chat.
Prerequisiti
Java
- JDK 1.7 o versioni successive
- Lo strumento di gestione dei pacchetti Maven
-
Un progetto Maven inizializzato. Per inizializzare un nuovo progetto, esegui il seguente comando nell'interfaccia a riga di comando:
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- Un'app Google Chat per cui sono abilitate le funzionalità interattive. Per creare un'app Chat interattiva utilizzando un servizio HTTP, completa questa guida rapida.
- Aggiungi l'app Chat a uno spazio. Per aggiungere l'app Chat, consulta Eseguire il test delle funzionalità interattive per le app Google Chat.
Python
- Python 3.6 o versioni successive
- Lo strumento di gestione dei pacchetti pip
- Un'app Google Chat per cui sono abilitate le funzionalità interattive. Per creare un'app di Chat interattiva utilizzando un servizio HTTP, completa questa guida rapida.
- Aggiungi l'app Chat a uno spazio. Per aggiungere l'app Chat, consulta Eseguire il test delle funzionalità interattive per le app Google Chat.
Node.js
- Node.js 14 o versioni successive
- Lo strumento di gestione dei pacchetti npm
-
Un progetto Node.js inizializzato. Per inizializzare un nuovo progetto, crea e passa a una nuova cartella, quindi esegui il seguente comando nell'interfaccia a riga di comando:
npm init
- Un'app Google Chat per cui sono abilitate le funzionalità interattive. Per creare un'app Chat interattiva utilizzando un servizio HTTP, completa questa guida rapida.
- Aggiungi l'app Chat a uno spazio. Per aggiungere l'app Chat, consulta Eseguire il test delle funzionalità interattive per le app Google Chat.
Apps Script
- Un'app Google Chat per cui sono abilitate le funzionalità interattive. Per creare un'app Chat interattiva in Apps Script, completa questa guida rapida.
- Aggiungi l'app Chat a uno spazio. Per aggiungere l'app Chat, vedi Testare le funzionalità interattive per le app Google Chat.
Passaggio 1: crea un account di servizio nella console Google Cloud
Crea un account di servizio che la tua app Chat possa utilizzare per accedere alle API di Google.
Crea un account di servizio
Per creare un account di servizio:
Console Google Cloud
- Nella console Google Cloud, vai a Menu > IAM e amministrazione > Account di servizio.
- Fai clic su Crea account di servizio.
- Inserisci i dettagli dell'account di servizio, quindi fai clic su Crea e continua.
- (Facoltativo) Assegna i ruoli all'account di servizio per concedere l'accesso alle risorse del progetto Google Cloud. Per ulteriori dettagli, consulta Concessione, modifica e revoca dell'accesso alle risorse.
- Fai clic su Continua.
- (Facoltativo) Inserisci gli utenti o i gruppi che possono gestire ed eseguire azioni con questo account di servizio. Per maggiori dettagli, vedi Gestire l'impersonificazione degli account di servizio.
- Fai clic su Fine. Prendi nota dell'indirizzo email dell'account di servizio.
Interfaccia a riga di comando gcloud
- Crea l'account di servizio:
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - (Facoltativo) Assegna i ruoli all'account di servizio per concedere l'accesso alle risorse del progetto Google Cloud. Per ulteriori dettagli, consulta Concessione, modifica e revoca dell'accesso alle risorse.
L'account di servizio viene visualizzato nella pagina dell'account di servizio. Successivamente, crea una chiave privata per l'account di servizio.
Crea una chiave privata
Per creare e scaricare una chiave privata per l'account di servizio, segui questi passaggi:
- Nella console Google Cloud, vai a Menu > IAM e amministrazione > Account di servizio.
- Seleziona il tuo account di servizio.
- Fai clic su Chiavi > Aggiungi chiave > Crea nuova chiave.
- Seleziona JSON, quindi fai clic su Crea.
Una nuova coppia di chiavi pubblica/privata viene generata e scaricata sul tuo computer come nuovo file. Salva il file JSON scaricato come
credentials.json
nella directory di lavoro. Questo file è l'unica copia di questa chiave. Per informazioni su come memorizzare la chiave in modo sicuro, consulta la sezione Gestire le chiavi degli account di servizio. - Fai clic su Chiudi.
Per ulteriori informazioni sugli account di servizio, consulta account di servizio nella documentazione di IAM di Google Cloud.
Successivamente, crea un client OAuth compatibile con Google Workspace Marketplace per questo account di servizio.
Ricevi l'approvazione dell'amministratore
Per utilizzare un ambito di autorizzazione che inizia conhttps://www.googleapis.com/auth/chat.app.*
, disponibile nell'ambito di una preview per sviluppatori, la tua app Chat deve ricevere un'approvazione dell'amministratore una tantum.
Per utilizzare l'ambito di autorizzazione https://www.googleapis.com/auth/chat.bot
,
non è richiesta l'approvazione dell'amministratore.
Per ricevere l'approvazione dell'amministratore, devi preparare l'account di servizio della tua app Chat con le seguenti informazioni:
- Un client OAuth compatibile con Google Workspace Marketplace.
- Configurazione dell'app nell'SDK di Google Workspace Marketplace.
Crea un client OAuth compatibile con Google Workspace Marketplace
Per creare un client OAuth compatibile con Google Workspace Marketplace, segui questi passaggi:
Nella console Google Cloud, vai a Menu > IAM e amministrazione > Account di servizio.
Fai clic sull'account di servizio che hai creato per la tua app Chat.
Fai clic su Impostazioni avanzate.
Fai clic su Crea client OAuth compatibile con Google Workspace Marketplace.
Fai clic su Continua.
Viene visualizzato un messaggio di conferma che indica che è stato creato un client OAuth compatibile con Google Workspace Marketplace.
Configurare l'app Chat nell'SDK di Google Workspace Marketplace
Per configurare l'app Chat nell'SDK di Google Workspace Marketplace:
Nella console Google Cloud, abilita l'SDK di Google Workspace Marketplace.
Nella console Google Cloud, vai a Menu > API e servizi > API e servizi abilitati > SDK di Google Workspace Marketplace > Configurazione app.
Completa la pagina Configurazione app. La modalità di configurazione dell'app Chat dipende dal pubblico di destinazione e da altri fattori. Per assistenza per completare la pagina di configurazione dell'app, consulta Configurare l'app nell'SDK di Google Workspace Marketplace. Ai fini di questa guida, inserisci le seguenti informazioni:
- In Visibilità delle app, seleziona Privato.
- Nella sezione Impostazioni di installazione, seleziona Installazione individuale + amministratore.
- In App integrations (Integrazioni di app), seleziona Chat app (App di chat).
In Ambiti OAuth, inserisci tutti gli ambiti di autenticazione utilizzati dalla tua app Chat.
In Informazioni sviluppatore, inserisci il nome dello sviluppatore, l'URL del sito web dello sviluppatore e l'email dello sviluppatore.
Fai clic su Salva bozza.
Ricevere l'approvazione dell'amministratore
Ora che il tuo account di servizio è configurato per ricevere l'approvazione dell'amministratore, obtained it from a Google Workspace administrator who can grant approval by following the steps in Configurare l'autorizzazione per le app di chat.
Passaggio 2: installa la libreria client Google e altre dipendenze
Installa la libreria client di Google e le altre dipendenze richieste per il progetto.
Java
Per aggiungere le librerie client di Google e altre dipendenze richieste al progetto Maven, modifica il file pom.xml
nella directory del progetto e aggiungi le seguenti dipendenze:
<dependencies>
<!-- ... existing dependencies ... -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-chat</artifactId>
<version>v1-rev20230905-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
Python
Se non hai ancora installato le librerie client di Google per Python, esegui il seguente comando nell'interfaccia a riga di comando:
pip3 install --upgrade google-api-python-client google-auth
Node.js
Per aggiungere le librerie client di Google al tuo progetto Node.js, passa alla directory del progetto ed esegui il comando seguente nell'interfaccia a riga di comando:
npm install "@googleapis/chat"
Apps Script
Questo esempio utilizza la libreria OAuth2 per Apps Script per generare un token JWT per l'autenticazione dell'account di servizio. Per aggiungere la libreria al progetto Apps Script:
- A sinistra, fai clic su Editor .
- A sinistra, accanto a Raccolte, fai clic su Aggiungi una raccolta .
- Inserisci l'ID script
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
. - Fai clic su Cerca e poi su Aggiungi.
In questo esempio viene utilizzato il servizio Chat avanzato per chiamare l'API Google Chat. Per attivare il servizio per il tuo progetto Apps Script:
- A sinistra, fai clic su Editor .
- A sinistra, accanto a Servizi, fai clic su Aggiungi un servizio .
- Seleziona API Google Chat.
- In Versione, seleziona v1.
- Fai clic su Aggiungi.
Puoi utilizzare qualsiasi linguaggio supportato dalle nostre librerie client.
Passaggio 3: scrivi uno script che utilizzi l'account di servizio per autenticarsi con l'API Chat
Il seguente codice esegue l'autenticazione con l'API Chat utilizzando un account di servizio, quindi pubblica un messaggio in uno spazio di Chat:
Java
- Nella directory del progetto, apri il file
src/main/java/com/google/chat/app/authsample/App.java
. Sostituisci i contenuti in
App.java
con il seguente codice:package com.google.chat.app.authsample; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.chat.v1.HangoutsChat; import com.google.api.services.chat.v1.model.Message; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; /** * Authenticates with Chat API using service account credentials, * then creates a Chat message. */ public class App { // Specify required scopes. private static final String CHAT_SCOPE = "https://www.googleapis.com/auth/chat.bot"; // Specify service account details. private static final String PRIVATE_KEY_RESOURCE_URI = "/credentials.json"; public static void main( String[] args ) { try { // Run app. Message response = App.createChatMessage(); // Print details about the created message. System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } private static Message createChatMessage() throws Exception { // Build the Chat API client and authenticate with the service account. GoogleCredentials credentials = GoogleCredentials.fromStream( App.class.getResourceAsStream(PRIVATE_KEY_RESOURCE_URI)) .createScoped(CHAT_SCOPE); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials); HangoutsChat chatService = new HangoutsChat.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("auth-sample-app") .build(); // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. String spaceName = "spaces/SPACE_NAME"; // Create a Chat message. Message message = new Message().setText("Hello, world!"); return chatService.spaces().messages().create(spaceName, message).execute(); } }
Nel codice, sostituisci
SPACE_NAME
con il nome di uno spazio, che puoi ottenere dal metodospaces.list
nell'API Chat o dall'URL di uno spazio.Crea una nuova sottodirectory denominata
resources
all'interno della directory del progetto.Assicurati che il file della chiave privata per il tuo account di servizio sia denominato
credentials.json
e copialo nella sottodirectoryresources
.Per configurare Maven in modo da includere il file della chiave privata nel pacchetto del progetto, modifica il file
pom.xml
nella directory del progetto e aggiungi la seguente configurazione alla sezione<build>
:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
Per configurare Maven in modo da includere le dipendenze nel pacchetto del progetto e per eseguire la classe principale dell'applicazione, modifica il file
pom.xml
nella directory del progetto e aggiungi la seguente configurazione alla sezione<plugins>
:<plugins> <!-- ... existing configurations ... --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.google.chat.app.authsample.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins>
Python
- Nella directory di lavoro, crea un file denominato
chat_app_auth.py
. Includi il seguente codice in
chat_app_auth.py
:from apiclient.discovery import build from google.oauth2 import service_account # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. creds = service_account.Credentials.from_service_account_file( 'credentials.json', scopes=SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=creds) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() # Prints details about the created message. print(result)
Nel codice, sostituisci
SPACE_NAME
con il nome di uno spazio, che puoi ottenere dal metodospaces.list
nell'API Chat o dall'URL di uno spazio. Assicurati che il file della chiave privata per il tuo account di servizio si chiamicredentials.json
.
Node.js
- Nella directory del progetto, crea un file denominato
chat_app_auth.js
. Includi il seguente codice in
chat_app_auth.js
:const chat = require('@googleapis/chat'); async function createMessage() { const auth = new chat.auth.GoogleAuth({ // Specify service account details. keyFilename: 'credentials.json', // Specify required scopes. scopes: ['https://www.googleapis.com/auth/chat.bot'] }); const authClient = await auth.getClient(); // Create the Chat API client and authenticate with the service account. const chatClient = await chat.chat({ version: 'v1', auth: authClient }); // Create a Chat message. const result = await chatClient.spaces.messages.create({ // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. parent: 'spaces/SPACE_NAME', // The message to create. requestBody: { 'text': 'Hello, world!' } }); return result; } // Execute function then print details about the created message. createMessage().then(console.log);
Nel codice, sostituisci
SPACE_NAME
con il nome di uno spazio, che puoi ottenere dal metodospaces.list
nell'API Chat o dall'URL di uno spazio. Assicurati che il file della chiave privata per il tuo account di servizio si chiamicredentials.json
.
Apps Script
Nell'editor di Apps Script, modifica il file
appsscript.json
e aggiungi l'ambito OAuth necessario per effettuare richieste esterne per ottenere il token OAuth dell'account di servizio:"oauthScopes": [ "https://www.googleapis.com/auth/script.external_request" ]
Salva il seguente codice in un file denominato
ChatAppAuth.gs
nel tuo progetto Apps Script:// Specify the contents of the file credentials.json. const CREDENTIALS = CREDENTIALS; const SCOPE = 'https://www.googleapis.com/auth/chat.bot'; // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. const PARENT = 'spaces/SPACE_NAME' /** * Authenticates with Chat API using app credentials, then posts a message. */ function createMessageWithAppCredentials() { try { const service = getService_(); if (!service.hasAccess()) { console.error(service.getLastError()); return; } // Specify the message to create. const message = {'text': 'Hello world!'}; // Call Chat API with a service account to create a message. const result = Chat.Spaces.Messages.create( message, PARENT, {}, // Authenticate with the service account token. {'Authorization': 'Bearer ' + service.getAccessToken()}); // Log details about the created message. console.log(result); } catch (err) { // TODO (developer) - Handle exception. console.log('Failed to create message with error %s', err.message); } } /** * Configures the OAuth library to authenticate with the service account. */ function getService_() { return OAuth2.createService(CREDENTIALS.client_email) .setTokenUrl('https://oauth2.googleapis.com/token') .setPrivateKey(CREDENTIALS.private_key) .setIssuer(CREDENTIALS.client_email) .setSubject(CREDENTIALS.client_email) .setScope(SCOPE) .setPropertyStore(PropertiesService.getScriptProperties()); }
Nel codice, sostituisci
CREDENTIALS
con i contenuti del filecredentials.json
.Nel codice, sostituisci
SPACE_NAME
con il nome di uno spazio, che puoi ottenere dal metodospaces.list
nell'API Chat o dall'URL di uno spazio.
Passaggio 4: esegui l'esempio completo
Nella directory di lavoro, compila ed esegui l'esempio:
Java
mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_app_auth.py
Node.js
node chat_app_auth.js
Apps Script
Apri il file ChatAppAuth.gs
nell'editor di Apps Script e
fai clic su Esegui.
Lo script invia una richiesta autenticata all'API Chat, che risponde pubblicando un messaggio in uno spazio di Chat come app di Chat.
Risolvere il problema dell'esempio
Questa sezione descrive i problemi comuni che potresti riscontrare durante il tentativo di eseguire questo esempio.
Non hai l'autorizzazione per utilizzare questa app
Quando esegui lo script, potresti ricevere il seguente errore:
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
Questo messaggio di errore indica che l'app Chat non ha l'autorizzazione per creare messaggi di Chat nello spazio Chat specificato.
Per risolvere l'errore, aggiungi l'app Chat allo spazio di Chat specificato nello script.
L'amministratore deve concedere all'app l'ambito di autorizzazione OAuth richiesto per questa azione
Quando esegui lo script, potresti ricevere il seguente messaggio di errore:
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}?alt=json returned "The administrator must grant the app the required OAuth authorization scope for this action.". Details: "The administrator must grant the app the required OAuth authorization scope for this action.">
Questo messaggio di errore indica che un amministratore di Google Workspace non ha ancora concesso all'app Chat l'approvazione una tantum per utilizzare gli ambiti di autorizzazione che iniziano con il nomehttps://www.googleapis.com/auth/chat.app.*
.
Per risolvere l'errore:
- Chiedi all'amministratore di Google Workspace di
concedere l'approvazione alla tua app di Chat.
Quando gestisci questo errore nella logica dell'app Chat,
valuta la possibilità di inviare un messaggio per comunicare che
l'app Chat richiede l'approvazione dell'amministratore per eseguire
l'azione richiesta, ad esempio:
To perform this action, I need approval. <https://support.google.com/a?p=chat-app-auth|Learn more>.
- Se il metodo dell'API Google Chat supporta l'ambito di autorizzazione
https://www.googleapis.com/auth/chat.bot
, che non richiede l'approvazione dell'amministratore, ti consigliamo di utilizzarlo. Per verificare quali ambiti di autorizzazione sono supportati da un metodo, consulta la documentazione di riferimento dell'API Google Chat.
Argomenti correlati
- Scopri cosa può fare l'API Chat consultando la documentazione di riferimento dell'API Chat.
- Se utilizzi un ambito di autorizzazione OAuth che inizia con
https://www.googleapis.com/auth/chat.app.*
, scopri come gli amministratori possono concedere l'approvazione una tantum.