Ce guide explique comment configurer et utiliser un compte de service pour accéder à l'API REST Google Chat au nom d'une application de chat. Tout d'abord, il vous explique comment créer un compte de service. Ensuite, il montre comment écrire un script qui utilise le compte de service pour s'authentifier auprès de l'API Chat et publier un message dans un espace Chat.
Les applications de chat peuvent utiliser les comptes de service pour s'authentifier lors de l'appel asynchrone de l'API REST Google Chat. Elles peuvent ainsi:
- Envoyez des messages à Google Chat avec
spaces.messages.create
pour :- Avertir les utilisateurs lorsqu'une tâche d'arrière-plan de longue durée est terminée.
- Alertez les utilisateurs lorsqu'un serveur s'est déconnecté.
- Demandez à un conseiller du service client de traiter une nouvelle demande.
- Mettez à jour les messages précédemment envoyés avec
spaces.messages.update
pour :- Modifier l'état d'une opération en cours.
- Mettez à jour la personne responsable ou la date limite d'une tâche.
- Répertoriez les utilisateurs d'un espace avec
spaces.members.list
pour :- Découvrez qui est dans un espace.
- Vérifiez que les membres de l'espace incluent tous les membres d'une équipe.
Lorsqu'elles sont authentifiées avec un compte de service, les applications de chat doivent être membres de l'espace afin d'obtenir des données ou d'effectuer des actions dans un espace Chat. Par exemple, pour lister les membres d'un espace ou pour créer un message dans un espace, l'application Chat doit elle-même être membre de l'espace.
Si votre application Chat doit accéder aux données utilisateur ou effectuer des actions en son nom, authentifiez-vous en tant qu'utilisateur.
Si vous êtes administrateur de domaine, vous pouvez accorder une délégation d'autorité au niveau du domaine pour autoriser le compte de service d'une application à accéder aux données de vos utilisateurs sans qu'ils aient à donner leur consentement. Après avoir configuré la délégation au niveau du domaine, vous pouvez passer des appels d'API à l'aide de votre compte de service pour usurper l'identité d'un compte utilisateur. Bien qu'un compte de service soit utilisé pour l'authentification, la délégation au niveau du domaine usurpe l'identité d'un utilisateur et est donc considérée comme une authentification utilisateur. Toute fonctionnalité nécessitant l'authentification de l'utilisateur, vous pouvez utiliser la délégation au niveau du domaine.
Pour en savoir plus sur les cas où les applications de chat nécessitent une authentification et sur le type d'authentification à utiliser, consultez Types d'authentification requis dans la présentation de l'authentification et des autorisations de l'API Chat.
Prérequis
Pour exécuter l'exemple de ce guide, vous devez disposer des conditions préalables suivantes:
Python
- Python 3.6 ou version ultérieure
- L'outil de gestion de packages pip
Bibliothèques clientes Google pour Python. Pour les installer, exécutez la commande suivante dans l'interface de ligne de commande:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Un compte Google Workspace ayant accès à Google Chat
Un projet Google Cloud pour lequel l'API Chat est activée Pour créer un projet et activer une API, consultez Créer un projet et activer l'API.
Une application de chat publiée avec un abonnement à un espace Chat:
- Pour créer et publier une application de chat, consultez Créer une application Google Chat avec Cloud Functions.
- Pour ajouter une application de chat à un espace Chat, consultez Ajouter des applications à des espaces ou à des conversations dans Google Chat.
Étape 1: Créez un compte de service dans la console Google Cloud
Créez un compte de service que votre application Chat utilisera pour accéder aux API Google.
Créez un compte de service :
Pour créer un compte de service, procédez comme suit :
- Dans la console Google Cloud, accédez au menu > IAM et administration > Comptes de service.
- Cliquez sur Create service account (Créer un compte de service).
- Saisissez les informations du compte de service, puis cliquez sur Créer et continuer.
- Facultatif: attribuez des rôles à votre compte de service pour accorder l'accès aux ressources de votre projet Google Cloud. Pour en savoir plus, consultez Accorder, modifier et révoquer les accès à des ressources.
- Cliquez sur Continuer.
- Facultatif: saisissez les utilisateurs ou groupes pouvant gérer et effectuer des actions avec ce compte de service. Pour en savoir plus, consultez Gérer l'emprunt d'identifiants pour un compte de service.
- Cliquez sur OK. Notez l'adresse e-mail du compte de service.
Le compte de service s'affiche sur la page des comptes de service. Ensuite, créez une clé privée pour le compte de service.
Créer une clé privée
Pour créer une clé privée pour le compte de service, procédez comme suit:
- Dans la console Google Cloud, accédez au menu > IAM et administration > Comptes de service.
- Sélectionnez votre compte de service.
- Cliquez sur Clés > Ajouter une clé > Créer une clé.
- Sélectionnez JSON, puis cliquez sur Créer.
Votre nouvelle paire de clés publique/privée est générée et téléchargée sur votre ordinateur en tant que nouveau fichier. Ce fichier est la seule copie de cette clé. Pour savoir comment stocker votre clé en toute sécurité, consultez Gérer les clés de compte de service.
- Cliquez sur Fermer.
Pour en savoir plus sur les comptes de service, consultez la page Comptes de service dans la documentation Google Cloud IAM.
Étape 2: Écrivez un script qui utilise le compte de service pour s'authentifier auprès de l'API REST Chat
Le code suivant s'authentifie auprès de l'API REST Chat à l'aide d'un compte de service, puis publie un message dans un espace Chat:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_app_auth.py
. Incluez le code suivant dans
chat_app_auth.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # 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() print(result)
Dans le code, remplacez
SPACE_NAME
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list
dans l'API Chat ou à partir de l'URL d'un espace.
Étape 3: Exécuter l'exemple complet
Dans votre répertoire de travail, créez et exécutez l'exemple:
Python
python3 chat_app_auth.py
Votre script envoie une requête authentifiée à l'API REST Chat, qui répond en envoyant un message dans un espace Chat en tant qu'application Chat.
Résoudre les problèmes suivants
Cette section décrit les problèmes courants que vous pouvez rencontrer lors de l'exécution de cet exemple.
Vous n'êtes pas autorisé à utiliser cette application
Lorsque vous exécutez chat_app_auth.py
, vous pouvez recevoir le message d'erreur suivant:
<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">
Ce message d'erreur signifie que l'application Chat n'est pas autorisée à publier des messages Chat dans l'espace Chat auquel elle tente de publier.
Pour résoudre l'erreur, ajoutez l'application Chat à l'espace Chat spécifié dans chat_app_auth.py
.
Étape suivante
Découvrez les autres fonctionnalités de l'API Chat en consultant la documentation de référence.