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 guides de démarrage rapide Google Workspace utilisent les bibliothèques clientes des 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 renseigner sur l'authentification et l'autorisation avant de choisir les identifiants d'accès appropriés pour votre application.

Créer 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 pour lequel Google Keep est activé.

Configurer votre environnement

Pour suivre ce guide de démarrage rapide, vous devez configurer 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 particulier de compte utilisé par une application plutôt que par une personne. Vous pouvez utiliser un compte de service pour accéder aux données, pour effectuer des actions via le compte 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 Create service account (Créer un compte de service).
  3. Renseignez 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: Indiquez 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'emprunt d'identité d'un compte de service.
  7. Cliquez sur OK. Notez l'adresse e-mail du compte de service.

gcloud CLI

  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 les identifiants sous la forme d'une paire de clés publique/privée. Ces identifiants sont utilisés par votre code 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.

    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. 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 page Gérer des 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 d'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 page Déléguer une 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 votre 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 super-administrateur et suivez la procédure 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 de votre compte de service et la liste des champs d'application OAuth pour qu'il puisse effectuer les étapes suivantes 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 niveaux d'accès que celui 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 téléchargé précédemment.

  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 dont le nom correspond à la valeur mainClassName de 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 déjà connecté à votre compte Google, connectez-vous lorsque vous y êtes invité. Si vous êtes connecté à plusieurs comptes, sélectionnez un compte à utiliser pour l'autorisation.
    2. Cliquez sur Accept (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, aucune autorisation ne vous sera demandée.

Étapes suivantes