Guia de início rápido do Java

Nos guias de início rápido, explicamos como configurar e executar um app que chama uma API do Google Workspace.

Os guias de início rápido do Google Workspace usam as bibliotecas de cliente da API para lidar com alguns detalhes do fluxo de autenticação e autorização. Recomendamos que você use as bibliotecas de cliente para seus próprios apps. Neste guia de início rápido, usamos uma abordagem de autenticação simplificada apropriada para um ambiente de teste. Para um ambiente de produção, recomendamos aprender sobre autenticação e autorização antes de escolher as credenciais de acesso apropriadas para seu aplicativo.

Crie um aplicativo de linha de comando Java que faz solicitações para a API Google Keep.

Objetivos

  • Configurar o ambiente.
  • Configure a amostra.
  • Execute a amostra.

Pré-requisitos

  • Uma Conta do Google com o Google Keep ativado.

Configure seu ambiente

Para concluir este guia de início rápido, configure seu ambiente.

Ativar a API

Antes de usar as APIs do Google, você precisa ativá-las em um projeto do Google Cloud. É possível ativar uma ou mais APIs em um único projeto do Google Cloud.
  • No console do Google Cloud, ative a API Google Keep.

    Ativar a API

Crie uma conta de serviço

Uma conta de serviço é um tipo especial de conta usado por um aplicativo, e não por uma pessoa. É possível usar uma conta de serviço para acessar dados ou executar ações pela conta robô, ou para acessar dados em nome dos usuários do Google Workspace ou do Cloud Identity. Para mais informações, consulte as Noções básicas sobre contas de serviço.

Console do Google Cloud

  1. No console do Google Cloud, acesse Menu > IAM e administrador > Contas de serviço.

    Acessar a página "Contas de serviço"

  2. Clique em Criar conta de serviço.
  3. Preencha os detalhes da conta de serviço e clique em Criar e continuar.
  4. Opcional: atribua papéis à conta de serviço para conceder acesso aos recursos do projeto do Google Cloud. Para mais detalhes, consulte Como conceder, alterar e revogar o acesso a recursos.
  5. Clique em Continuar.
  6. Opcional: insira usuários ou grupos que podem gerenciar e realizar ações com essa conta de serviço. Para mais detalhes, consulte Como gerenciar a representação de uma conta de serviço.
  7. Clique em Concluído. Anote o endereço de e-mail da conta de serviço.

CLI da gcloud

  1. Crie a conta de serviço:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. Opcional: atribua papéis à conta de serviço para conceder acesso aos recursos do projeto do Google Cloud. Para mais detalhes, consulte Como conceder, alterar e revogar o acesso a recursos.

Criar credenciais para uma conta de serviço

Você precisa obter credenciais na forma de um par de chaves públicas/privadas. Essas credenciais são usadas pelo código para autorizar ações da conta de serviço no seu app.
  1. No console do Google Cloud, acesse Menu > IAM e administrador > Contas de serviço.

    Acessar a página "Contas de serviço"

  2. Selecione sua conta de serviço.
  3. Clique em Chaves > Adicionar chave > Criar nova chave.
  4. Selecione JSON e clique em Criar.

    Seu novo par de chave pública/privada é gerado e transferido por download para sua máquina como um novo arquivo. Salve o arquivo JSON salvo como credentials.json no diretório de trabalho. Esse arquivo é a única cópia da chave. Para informações sobre como armazenar a chave com segurança, consulte Como gerenciar chaves de contas de serviço.

  5. Clique em Fechar.

Configurar a delegação em todo o domínio para uma conta de serviço

Para chamar APIs em nome dos usuários em uma organização do Google Workspace, a conta de serviço precisa receber a delegação de autoridade em todo o domínio no Admin Console do Google Workspace por uma conta de superadministrador. Para mais informações, consulte Como delegar autoridade em todo o domínio a uma conta de serviço.
  1. No console do Google Cloud, acesse Menu > IAM e administrador > Contas de serviço.

    Acessar a página "Contas de serviço"

  2. Selecione sua conta de serviço.
  3. Clique em Mostrar configurações avançadas.
  4. Em "Delegação em todo o domínio", encontre o "ID do cliente" da sua conta de serviço. Clique em Copiar para copiar o valor do ID do cliente para a área de transferência.
  5. Se você tiver acesso de superadministrador à conta do Google Workspace relevante, clique em Ver o Admin Console do Google Workspace, faça login usando uma conta de usuário de superadministrador e continue seguindo estas etapas.

    Se você não tiver acesso de superadministrador à conta do Google Workspace relevante, entre em contato com um superadministrador dessa conta e envie o ID do cliente e a lista de escopos do OAuth da sua conta de serviço para que ele possa concluir as etapas a seguir no Admin Console.

    1. No Google Admin Console, acesse Menu > Segurança > Acesso e controle de dados > Controles de API.

      Acessar os controles da API

    2. Clique em Gerenciar a delegação em todo o domínio.
    3. clique em Add new;
    4. No campo "ID do cliente", cole o ID que você copiou anteriormente.
    5. No campo "Escopos do OAuth", insira uma lista separada por vírgulas dos escopos exigidos pelo aplicativo. Esse é o mesmo conjunto de escopos que você definiu ao configurar a tela de permissão OAuth.
    6. Clique em Autorizar.

Preparar o espaço de trabalho

  1. No diretório de trabalho, crie uma nova estrutura de projeto:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. No diretório src/main/resources/, copie o arquivo credentials.json que você salvou anteriormente.

  3. Abra o arquivo build.gradle padrão e substitua o conteúdo dele pelo seguinte 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'
    }
    

Configure a amostra

  1. No diretório src/main/java/, crie um novo arquivo Java com um nome que corresponda ao valor mainClassName no arquivo build.gradle.

  2. Inclua o seguinte código no novo arquivo 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();
      }
    }
    
    

Executar a amostra

  1. Execute o exemplo:

    gradle run
    
  1. Na primeira execução da amostra, ela solicita que você autorize o acesso:
    1. Se você ainda não tiver feito login na sua Conta do Google, faça isso quando solicitado. Se você tiver feito login em várias contas, selecione uma para usar na autorização.
    2. Clique em Aceitar.

    O aplicativo Java executa e chama a API Google Keep.

    As informações de autorização são armazenadas no sistema de arquivos. Dessa forma, na próxima vez que você executar o exemplo de código, não receberá uma solicitação de autorização.

Próximas etapas