Authentifier et autoriser des utilisateurs

Ce guide explique comment utiliser OAuth 2.0 avec les identifiants Google des utilisateurs pour accéder à l'API Chat. L'authentification et l'autorisation avec les identifiants utilisateur permettent aux applications Chat d'accéder aux données utilisateur et d'effectuer des opérations au nom de l'utilisateur authentifié. En s'authentifiant pour le compte d'un utilisateur, l'application dispose des mêmes autorisations que cet utilisateur et peut effectuer des actions comme si celui-ci avait été effectué par cet utilisateur. Toutefois, ces applications de chat ne peuvent pas être publiées publiquement. Pour en savoir plus, consultez Publier des applications Google Chat.

Après s'être authentifié et autorisé un appel d'API avec des identifiants utilisateur, les applications de chat peuvent effectuer les opérations suivantes:

Lorsqu'une application effectue une action avec authentification des utilisateurs (par exemple, la création d'un espace), Google Chat affiche un message d'attribution indiquant le nom de l'application qui a effectué l'action à l'utilisateur qui l'a autorisée.

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.

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. Une fois la délégation au niveau du domaine configurée, le compte de service peut emprunter 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 utiliser l'API Google Chat afin d'accéder aux ressources d'une organisation Google Workspace ou de les modifier, l'utilisateur doit être membre de cette organisation. Les utilisateurs externes ou sans compte Google Workspace ayant accès à Google Chat ne sont pas acceptés.

Prérequis

Python

Étape 1: Installez la bibliothèque cliente Google

Si vous n'avez pas encore installé les bibliothèques clientes Google pour le langage de votre choix, exécutez la commande suivante dans l'interface de ligne de commande:

Python

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client

Vous pouvez utiliser n'importe quel langage compatible avec nos bibliothèques clientes.

Étape 2: Configurez l'écran de consentement OAuth, spécifiez des champs d'application et enregistrez votre application

Lorsque vous utilisez OAuth 2.0 pour l'autorisation, Google présente à l'utilisateur un écran de consentement comprenant un résumé de votre projet, ses règles et les champs d'application des autorisations demandés. La configuration de l'écran de consentement OAuth de votre application définit ce que Google présente aux utilisateurs et aux examinateurs d'applications, et enregistre votre application pour vous permettre de la publier plus tard.

Toutes les applications utilisant OAuth 2.0 nécessitent une configuration d'écran de consentement, mais vous ne devez lister que les champs d'application des applications utilisées par des personnes externes à votre organisation Google Workspace.

  1. Dans la console Google Cloud, accédez au menu > API et services > Écran d'autorisation OAuth.

    Accéder à l'écran de consentement OAuth

  2. Sélectionnez le type d'utilisateur de votre application, puis cliquez sur Créer.

  3. Remplissez le formulaire d'inscription, puis cliquez sur Enregistrer et continuer.

  4. Cliquez sur Ajouter ou supprimer des champs d'application. Ajoutez et validez les champs d'application des autorisations requis par votre application, cliquez sur Mettre à jour, puis sur Enregistrer et continuer.

  5. Consultez le récapitulatif de l'enregistrement de votre application. Cliquez sur Modifier pour apporter des modifications ou cliquez sur Revenir au tableau de bord.

Étape 3: Créez les identifiants d'ID client OAuth dans la console Google Cloud

Pour vous authentifier en tant qu'utilisateur final et accéder aux données utilisateur dans votre application, vous devez créer un ou plusieurs ID client OAuth 2.0. Un ID client permet d'identifier une application unique auprès des serveurs OAuth de Google. Si votre application s'exécute sur plusieurs plates-formes, comme Android, iOS et le Web, vous devez créer un ID client distinct pour chaque plate-forme.

Créer des identifiants client OAuth

Choisissez votre type d'application pour obtenir des instructions spécifiques sur la création de l'ID client OAuth:

Application Web

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > Application Web.
  4. Dans le champ Nom, saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Ajoutez des URI autorisés associés à votre application :
    • Applications côté client (JavaScript) : sous Origines JavaScript autorisées, cliquez sur Ajouter un URI. Saisissez ensuite un URI à utiliser pour les requêtes de navigateur. Elle identifie les domaines à partir desquels votre application peut envoyer des requêtes API au serveur OAuth 2.0.
    • Applications côté serveur (Java, Python, etc.) : sous URI de redirection autorisés, cliquez sur Ajouter un URI. Saisissez ensuite un URI de point de terminaison auquel le serveur OAuth 2.0 peut envoyer des réponses.
  6. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel identifiant et votre code secret du client.

    Notez l'ID client. Les codes secrets du client ne sont pas utilisés pour les applications Web.

  7. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous le champ ID client OAuth 2.0.

Android

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > Android.
  4. Dans le champ "Nom", saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Dans le champ "Nom du package", saisissez le nom du package indiqué dans le fichier AndroidManifest.xml.
  6. Dans le champ "Empreinte du certificat SHA-1", saisissez l'empreinte du certificat SHA-1 générée.
  7. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel ID client.
  8. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous "ID client OAuth 2.0".

iOS

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > iOS.
  4. Dans le champ "Nom", saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Dans le champ "Bundle ID" (ID de bundle), saisissez l'identifiant du bundle dans le fichier Info.plist de l'application.
  6. (Facultatif) Si votre application apparaît sur l'App Store d'Apple, saisissez son ID.
  7. Facultatif: dans le champ "ID d'équipe", saisissez la chaîne de 10 caractères unique générée par Apple et attribuée à votre équipe.
  8. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel identifiant et votre code secret du client.
  9. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous "ID client OAuth 2.0".

Application Chrome

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > Application Chrome.
  4. Dans le champ "Nom", saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Dans le champ "ID de l'application", saisissez la chaîne d'ID unique de 32 caractères de votre application. Vous pouvez trouver cet ID dans l'URL du Chrome Web Store de votre application et dans le tableau de bord du développeur du Chrome Web Store.
  6. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel identifiant et votre code secret du client.
  7. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous "ID client OAuth 2.0".

Application de bureau

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > Application de bureau.
  4. Dans le champ Nom, saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel identifiant et votre code secret du client.
  6. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous ID client OAuth 2.0.

Téléviseurs et périphériques d'entrée à accès limité

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > Téléviseurs et périphériques d'entrée à accès limité.
  4. Dans le champ "Nom", saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel identifiant et votre code secret du client.
  6. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous "ID client OAuth 2.0".

Plate-forme Windows universelle (UWP)

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.
  3. Cliquez sur Type d'application > Plate-forme Windows universelle (UWP).
  4. Dans le champ "Nom", saisissez le nom des identifiants. Ce nom ne s'affiche que dans la console Google Cloud.
  5. Dans le champ "ID sur l'App Store", saisissez la valeur unique de votre application (12 caractères) correspondant à l'ID Microsoft Store. Vous pouvez trouver cet ID dans l'URL Microsoft Store de votre application et dans le Centre des partenaires.
  6. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, avec votre nouvel identifiant et votre code secret du client.
  7. Cliquez sur OK. Les identifiants que vous venez de créer apparaissent sous "ID client OAuth 2.0".

Télécharger le fichier JSON du code secret du client

Le fichier secret du client est une représentation JSON des identifiants d'ID client OAuth auxquels votre application Chat peut faire référence lorsqu'elle les fournit.

  1. Dans la console Google Cloud, accédez au menu > API et services > Identifiants.

    Accéder à "Identifiants"

  2. Sous ID client OAuth 2.0, cliquez sur l'ID client que vous avez créé.

  3. Cliquez sur Télécharger au format JSON.

  4. Enregistrez le fichier sous le nom client_secrets.json.

Étape 4: Écrivez un script qui appelle l'API Chat

Le code suivant utilise une bibliothèque cliente pour appeler l'API Chat. Il s'authentifie auprès de l'API Chat à l'aide des identifiants d'ID client OAuth, puis crée un espace.

Enregistrez le code suivant dans un fichier nommé chat_space_create_named.py, dans le même répertoire que client_secrets.json:

Python

from __future__ import print_function

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# Define your app's authorization scopes.
# When modifying these scopes, delete the file token.json, if it exists.
SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then creates a Chat space.
    '''

    flow = InstalledAppFlow.from_client_secrets_file(
                      'client_secrets.json', SCOPES)
    creds = flow.run_local_server()

    # Build a service endpoint for Chat API.
    service = build('chat', 'v1', credentials=creds)

    # Use the service endpoint to call Chat API.
    result = service.spaces().create(

      # Details about the space to create.
      body = {

        # To create a named space, set spaceType to SPACE.
        'spaceType': 'SPACE',

        # The user-visible name of the space.
        'displayName': 'API-made'
      }

      ).execute()

    # Prints details about the created membership.
    print(result)

if __name__ == '__main__':
    main()

Étape 5: Exécuter l'exemple de script

Pour exécuter l'exemple, accédez à la ligne de commande qui contient chat_space_create_named.py et client_secrets.json, puis exécutez la commande suivante:

Python

python3 chat_space_create_named.py

Un navigateur s'ouvre et vous invite à vous connecter à votre compte Google.

Se connecter pour autoriser une application de chat

Figure 1. Écran de consentement OAuth dans lequel vous sélectionnez le compte auquel authentifier l'application.

Une fois que vous êtes connecté, l'écran de consentement OAuth s'affiche et vous invite à autoriser l'application.

Une fois cette autorisation accordée, le script appelle l'API Chat, qui répond en ajoutant l'application Chat à un espace Chat. La console affiche les détails de l'appel d'API.

Résoudre les problèmes suivants

Lorsque vous exécutez chat_space_create_named.py, vous pouvez recevoir le message d'erreur suivant:

Expected a JSON object with a single property for a "web" or "installed" application

Ce message d'erreur signifie que le fichier client_secrets.json que vous avez téléchargé depuis la console Google Cloud ne commence pas par la propriété "web" ou "installed". Une fois authentifié avec le fichier téléchargé, si votre code n'enregistre pas le jeton d'accès dans un nouveau fichier tel que token.json, le jeton d'accès est écrit dans client_secrets.json, ce qui peut entraîner cette erreur lors des tentatives d'autorisation ultérieures.

Pour résoudre l'erreur, téléchargez à nouveau le fichier secret client à partir de la console Google Cloud et enregistrez le nouveau fichier à l'emplacement du fichier actuel.

Pour découvrir les autres avantages de l'API Chat, consultez la documentation de référence de l'API Chat.