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 un API de Google Workspace.

Las guías de inicio rápido de Google Workspace usan las bibliotecas cliente de la API para controlar algunas los detalles del flujo de autenticación y autorización. Te recomendamos lo siguiente: usas las bibliotecas cliente para tus propias apps. En esta guía de inicio rápido, se usa un de autenticación simplificada que es adecuado para realizar pruebas en un entorno de nube. Para un entorno de producción, recomendamos conocer autenticación y autorización antes de elige las credenciales de acceso que sean adecuados para tu 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 que una persona. Puedes usar una cuenta de servicio para acceder a datos o realizar acciones por la cuenta robot o para acceder a los datos en nombre 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 Administrador > Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Haga 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 el robo de identidad 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. Estos credenciales que tu código usa para autorizar acciones de la cuenta de servicio en tu app.
  1. En la consola de Google Cloud, ve a Menú > IAM y Administrador > 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.

    Ya se generó y descargó el nuevo par de claves pública/privada en tu máquina como un archivo nuevo. Guarda el archivo JSON descargado como credentials.json en tu de trabajo actual. Este archivo es la única copia de la clave. Para obtener información sobre cómo almacenar tu clave de forma segura, consulta Administra claves de 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, tu cuenta de servicio debe tener la delegación de autoridad de todo el dominio en la Consola del administrador de Google Workspace con una cuenta de administrador avanzado. Para ver 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 Administrador > 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", buscar 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 Consulta la Consola del administrador de Google Workspace y, luego, accede con un usuario administrador avanzado. y sigue 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 una lista de permisos de OAuth para que puedan 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 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 "ID de cliente", haz lo siguiente: pega el ID de cliente que copiaste antes.
    5. En la sección “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 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 anteriormente.

  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 coincide con el valor mainClassName de 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();
      }
    }
    
    

Ejecuta 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 tanto, la próxima vez que ejecutes la muestra código, no se te solicitará autorización.

Próximos pasos