Guía de inicio rápido de Java

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

En las guías de inicio rápido de Google Workspace, se 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 adecuado para un entorno de pruebas. En el caso de un entorno de producción, te recomendamos que obtengas información sobre la autenticación y la autorización antes de elegir las credenciales de acceso apropiadas para la app.

Crea 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, no una persona. Puedes usar una cuenta de servicio para acceder a los datos o realizar acciones con la cuenta robot, o bien para acceder a los datos en nombre de los 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 usuarios o grupos que puedan administrar y realizar acciones con esta cuenta de servicio. Para obtener más información, 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 un par de claves públicas/privadas. 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á el nuevo par de claves pública/privada en tu equipo como un archivo nuevo. Guarda el archivo JSON descargado como credentials.json en tu directorio de trabajo. Este archivo es la única copia de esta clave. Para obtener más información sobre cómo almacenar tu clave de forma segura, consulta Cómo administrar 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, una cuenta de administrador avanzado debe otorgar a tu cuenta de servicio la delegación de autoridad de todo el dominio en la Consola del administrador de Google Workspace. Para obtener más información, consulta Cómo delegar la 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 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 de cliente que copiaste anteriormente.
    5. En el campo “Permisos de OAuth”, ingresa una lista delimitada por comas de los permisos que requiere tu aplicación. Este es el mismo conjunto de permisos que definiste cuando configuraste 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 archivo Java nuevo con un nombre que coincida con el valor mainClassName en tu 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 una para usar 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