Guide de démarrage rapide pour Java

Les guides de démarrage rapide expliquent comment configurer et exécuter une application qui appelle une API Google Workspace.

Les démarrages rapides Google Workspace utilisent les bibliothèques clientes de l'API pour gérer certains détails du flux d'authentification et d'autorisation. Nous vous recommandons d'utiliser les bibliothèques clientes pour vos propres applications. Ce guide de démarrage rapide utilise une approche d'authentification simplifiée adaptée à un environnement de test. Pour un environnement de production, nous vous recommandons de vous familiariser avec l'authentification et l'autorisation avant de choisir les identifiants d'accès appropriés pour votre application.

Créez une application de ligne de commande Java qui envoie des requêtes à l'API Google Keep.

Objectifs

  • configurer votre environnement ;
  • Configurez l'exemple.
  • Exécutez l'exemple.

Prérequis

  • Un compte Google avec Google Keep activé

Configurer votre environnement

Pour suivre ce guide de démarrage rapide, configurez votre environnement.

Activer l'API

Avant d'utiliser les API Google, vous devez les activer dans un projet Google Cloud. Vous pouvez activer une ou plusieurs API dans un même projet Google Cloud.
  • Dans la console Google Cloud, activez l'API Google Keep.

    Activer l'API

Créer un compte de service

Un compte de service est un type de compte particulier utilisé par une application, et non par une personne. Vous pouvez utiliser un compte de service pour accéder aux données ou effectuer des actions par le biais du compte de robot, ou pour accéder aux données au nom des utilisateurs Google Workspace ou Cloud Identity. Pour en savoir plus, consultez la page Comprendre les comptes de service.

Console Google Cloud

  1. Dans la console Google Cloud, accédez à Menu  > IAM et administration > Comptes de service.

    Accéder à la page "Comptes de service"

  2. Cliquez sur Créer un compte de service.
  3. Indiquez les détails du compte de service, puis cliquez sur Créer et continuer.
  4. 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.
  5. Cliquez sur Continuer.
  6. Facultatif: saisissez les utilisateurs ou les groupes autorisés à gérer et à effectuer des actions avec ce compte de service. Pour en savoir plus, consultez Gérer l'usurpation d'identité d'un compte de service.
  7. Cliquez sur OK. Notez l'adresse e-mail du compte de service.

CLI gcloud

  1. Créez le compte de service :
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. 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.

Créer des identifiants pour un compte de service

Vous devez obtenir des identifiants sous la forme d'une paire de clés publique/privée. Votre code utilise ces identifiants pour autoriser les actions du compte de service dans votre application.
  1. Dans la console Google Cloud, accédez à Menu  > IAM et administration > Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez votre compte de service.
  3. Cliquez sur Clés > Ajouter une clé > Créer une clé.
  4. Sélectionnez JSON, puis cliquez sur Créer.

    La 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. Enregistrez le fichier JSON téléchargé sous le nom credentials.json dans votre répertoire de travail. Ce fichier est la seule copie de cette clé. Pour savoir comment stocker votre clé de manière sécurisée, consultez la section Gérer les clés de compte de service.

  5. Cliquez sur Fermer.

Configurer la délégation au niveau du domaine pour un compte de service

Pour appeler des API au nom des utilisateurs d'une organisation Google Workspace, un compte super-administrateur doit accorder à votre compte de service une délégation d'autorité au niveau du domaine dans la console d'administration Google Workspace. Pour en savoir plus, consultez la section Déléguer l'autorité au niveau du domaine à un compte de service.
  1. Dans la console Google Cloud, accédez à Menu  > IAM et administration > Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez votre compte de service.
  3. Cliquez sur Afficher les paramètres avancés.
  4. Sous "Délégation au niveau du domaine", recherchez l'ID client de votre compte de service. Cliquez sur Copier  pour copier la valeur de l'ID client dans le presse-papiers.
  5. Si vous disposez d'un accès super-administrateur au compte Google Workspace concerné, cliquez sur Afficher la console d'administration Google Workspace, puis connectez-vous à l'aide d'un compte utilisateur super-administrateur et suivez les étapes ci-dessous.

    Si vous ne disposez pas d'un accès super-administrateur au compte Google Workspace concerné, contactez un super-administrateur de ce compte et envoyez-lui l'ID client et la liste des champs d'application OAuth de votre compte de service afin qu'il puisse suivre les étapes ci-dessous dans la console d'administration.

    1. Dans la console d'administration Google, accédez à Menu  > Sécurité > Contrôle des accès et des données > Commandes des API.

      Accéder aux commandes des API

    2. Cliquez sur Gérer la délégation au niveau du domaine.
    3. Cliquez sur Ajouter.
    4. Dans le champ "ID client", collez l'ID client que vous avez copié précédemment.
    5. Dans le champ "Champs d'application OAuth", saisissez une liste des champs d'application requis par votre application, séparés par une virgule. Il s'agit du même ensemble de champs d'application que vous avez défini lors de la configuration de l'écran de consentement OAuth.
    6. Cliquez sur Autoriser.

Préparer l'espace de travail

  1. Dans votre répertoire de travail, créez une structure de projet:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. Dans le répertoire src/main/resources/, copiez le fichier credentials.json que vous avez précédemment téléchargé.

  3. Ouvrez le fichier build.gradle par défaut et remplacez son contenu par le code suivant:

      apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'KeepQuickstart'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    version = '1.0'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.api-client:google-api-client:1.23.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
        implementation 'com.google.apis:google-api-services-keep:v1-rev20210528-1.31.0'
    }
    

Configurer l'exemple

  1. Dans le répertoire src/main/java/, créez un fichier Java portant un nom correspondant à la valeur mainClassName dans votre fichier build.gradle.

  2. Incluez le code suivant dans votre nouveau fichier Java:

    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.keep.v1.Keep;
    import com.google.api.services.keep.v1.model.Note;
    import com.google.api.services.keep.v1.model.Section;
    import com.google.api.services.keep.v1.model.TextContent;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.security.GeneralSecurityException;
    import java.util.Collections;
    import java.util.List;
    
    public class KeepQuickstart {
    
      private static final String APPLICATION_NAME = "Google Keep API Java Quickstart";
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
      /**
       * Global instance of the scopes required by this quickstart. If modifying these scopes, delete
       * your previously saved tokens/ folder.
       */
      private static final List<String> KEEP_SCOPES =
          Collections.singletonList("https://www.googleapis.com/auth/keep");
    
      private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
    
      /**
       * Creates an authorized Credential object.
       *
       * @param HTTP_TRANSPORT The network HTTP Transport.
       * @return An authorized Credential object.
       * @throws IOException
       */
      private static Credential getOAuthCredentials(final NetHttpTransport HTTP_TRANSPORT)
          throws IOException {
        // Load client secrets.
        InputStream in = KeepQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
        if (in == null) {
          throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
        }
        GoogleClientSecrets clientSecrets =
            GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
    
        // Build flow and trigger user authorization request.
        GoogleAuthorizationCodeFlow flow =
            new GoogleAuthorizationCodeFlow.Builder(
                    HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, KEEP_SCOPES)
                .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens")))
                .setAccessType("offline")
                .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
      }
    
      public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        Keep service =
            new Keep.Builder(HTTP_TRANSPORT, JSON_FACTORY, getOAuthCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
    
        Section noteBody =
            new Section().setText(new TextContent().setText("Finish preparations by tomorrow!"));
        Note newNote = new Note().setTitle("Customer call next week").setBody(noteBody);
    
        // Creates a new text note.
        service.notes().create(newNote).execute();
      }
    }
    
    

Exécuter l'exemple

  1. Exécutez l'exemple:

    gradle run
    
  1. La première fois que vous exécutez l'exemple, vous êtes invité à autoriser l'accès :
    1. Si vous n'êtes pas encore connecté à votre compte Google, connectez-vous lorsque vous y êtes invité. Si vous êtes connecté à plusieurs comptes, sélectionnez-en un pour l'autorisation.
    2. Cliquez sur Accepter.

    Votre application Java s'exécute et appelle l'API Google Keep.

    Les informations d'autorisation sont stockées dans le système de fichiers. Par conséquent, la prochaine fois que vous exécuterez l'exemple de code, vous ne serez pas invité à vous authentifier.

Étapes suivantes