Guía de inicio rápido de Java

Las guías de inicio rápido explican cómo configurar y ejecutar una app que llame a una API de Google Workspace.

Las guías de inicio rápido de Google Workspace usan las bibliotecas cliente de la API para manejar algunos detalles del flujo de autenticación y autorización. Te recomendamos que uses las bibliotecas cliente para tus propias apps. En esta guía de inicio rápido, se usa un enfoque de autenticación simplificado que es apropiado para un entorno de pruebas. En el caso de un entorno de producción, te recomendamos obtener información sobre la autenticación y autorización antes de elegir las credenciales de acceso adecuadas para la app.

Crear una aplicación de línea de comandos de Java que realice solicitudes a la API de Google Keep

Objetivos

  • Configurar el entorno
  • Configura la muestra.
  • Ejecuta la muestra.

Requisitos previos

  • Una Cuenta de Google con Google Keep habilitado

Configura tu entorno

Para completar esta guía de inicio rápido, configura tu entorno.

Habilita la API

Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud. Puedes activar una o más APIs en un solo proyecto de Google Cloud.

Crea una cuenta de servicio

Una cuenta de servicio es un tipo especial de cuenta que usa una aplicación, en lugar de una persona. Puedes usar una cuenta de servicio para acceder a datos o realizar acciones de la cuenta robot, o acceder a los datos en nombre de usuarios de Google Workspace o Cloud Identity. Para obtener más información, consulta Comprende las cuentas de servicio.

Consola de Google Cloud

  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Haz clic en Crear cuenta de servicio.
  3. Completa los detalles de la cuenta de servicio y, luego, haz clic en Crear y continuar.
  4. Opcional: Asigna roles a tu cuenta de servicio para otorgar acceso a los recursos de tu proyecto de Google Cloud. Para obtener más detalles, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.
  5. Haz clic en Continuar.
  6. Opcional: Ingresa los usuarios o grupos que puedan administrar y realizar acciones con esta cuenta de servicio. Para obtener más detalles, consulta Administra la suplantación de cuentas de servicio.
  7. Haz clic en Listo. Toma nota de la dirección de correo electrónico de la cuenta de servicio.

gcloud CLI

  1. Crea la cuenta de servicio:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. Opcional: Asigna roles a tu cuenta de servicio para otorgar acceso a los recursos de tu proyecto de Google Cloud. Para obtener más detalles, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

Crea credenciales para una cuenta de servicio

Debes obtener credenciales en forma de par de clave pública/privada. Tu código usa estas credenciales para autorizar acciones de la cuenta de servicio dentro de la app.
  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona tu cuenta de servicio.
  3. Haz clic en Claves > Agregar clave > Crear clave nueva.
  4. Selecciona JSON y, luego, haz clic en Crear.

    Se generará y descargará a tu equipo el nuevo par de claves pública/privada como un archivo nuevo. Guarda el archivo JSON descargado como credentials.json en tu directorio de trabajo. Este archivo es la única copia de la clave. Si quieres obtener más información para almacenar tu clave de forma segura, consulta Administra claves para cuentas de servicio.

  5. Haz clic en Cerrar.

Configurar la delegación de todo el dominio para una cuenta de servicio

Para llamar a las APIs en nombre de los usuarios de una organización de Google Workspace, la cuenta de servicio debe tener la delegación de autoridad de todo el dominio en la Consola del administrador de Google Workspace mediante una cuenta de administrador avanzado. Para obtener más información, consulta Delega autoridad de todo el dominio a una cuenta de servicio.
  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona tu cuenta de servicio.
  3. Haz clic en Mostrar configuración avanzada.
  4. En "Delegación de todo el dominio", busca el "ID de cliente" de tu cuenta de servicio. Haz clic en Copiar para copiar el valor del ID de cliente en el portapapeles.
  5. Si tienes acceso de administrador avanzado a la cuenta de Google Workspace relevante, haz clic en Ver la Consola del administrador de Google Workspace, accede con una cuenta de usuario de administrador avanzado y continúa con estos pasos.

    Si no tienes acceso de administrador avanzado a la cuenta de Google Workspace relevante, comunícate con un administrador avanzado de esa cuenta y envíale el ID de cliente de tu cuenta de servicio y la lista de permisos de OAuth para que pueda completar los siguientes pasos en la Consola del administrador.

    1. En la Consola del administrador de Google, ve a Menú > Seguridad > Control de acceso y datos > Controles de la API.

      Ir a Controles de API

    2. Haz clic en Administrar la delegación de todo el dominio.
    3. Haz clic en Add new (Agregar nuevo).
    4. En el campo "ID de cliente", pega el ID que copiaste anteriormente.
    5. En el campo "Alcances de OAuth", ingresa una lista delimitada por comas de los alcances que requiere tu aplicación. Este es el mismo conjunto de permisos que definiste al configurar la pantalla de consentimiento de OAuth.
    6. Haz clic en Autorizar.

Prepara el lugar de trabajo

  1. En tu directorio de trabajo, crea una nueva estructura de proyecto:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. En el directorio src/main/resources/, copia el archivo credentials.json que descargaste antes.

  3. Abre el archivo build.gradle predeterminado y reemplaza su contenido por el siguiente código:

      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'
    }
    

Configura la muestra

  1. En el directorio src/main/java/, crea un nuevo archivo Java con un nombre que coincida con el valor mainClassName del archivo build.gradle.

  2. Incluye el siguiente código en tu nuevo archivo 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();
      }
    }
    
    

Ejecutar la muestra

  1. Ejecuta la muestra:

    gradle run
    
  1. La primera vez que ejecutes la muestra, se te solicitará que autorices el acceso:
    1. Si aún no accediste a tu Cuenta de Google, hazlo cuando se te solicite. Si accediste a varias cuentas, selecciona la que quieras usar para la autorización.
    2. Haz clic en Aceptar.

    Tu aplicación de Java se ejecuta y llama a la API de Google Keep.

    La información de autorización se almacena en el sistema de archivos, por lo que la próxima vez que ejecutes el código de muestra, no se te solicitará autorización.

Próximos pasos