Guia de início rápido do Java

Os guias de início rápido explicam como configurar e executar um app que chama uma API 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 aplicativos. 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 app.

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

Objetivos

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

Pré-requisitos

  • Uma conta do Google Workspace com o Google Meet ativado.

configurar o ambiente

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

Ativar a API

Antes de usar as APIs do Google, é preciso 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 Meet.

    Ativar a API

Se você estiver usando um novo projeto do Google Cloud para concluir este guia de início rápido, configure a tela de permissão OAuth e adicione-se como usuário de teste. Se você já concluiu essa etapa para seu projeto do Cloud, pule para a próxima seção.

  1. No console do Google Cloud, acesse Menu > APIs e serviços > Tela de permissão OAuth.

    Acessar a tela de permissão OAuth

  2. Em Tipo de usuário, selecione Interno e clique em Criar.
  3. Preencha o formulário de registro do app e clique em Salvar e continuar.
  4. Por enquanto, é possível pular a adição de escopos e clicar em Salvar e continuar. No futuro, quando você criar um app para uso fora da sua organização do Google Workspace, será necessário alterar o Tipo de usuário para Externo e, em seguida, adicionar os escopos de autorização exigidos pelo app.

  5. Analise o resumo de registro do seu app. Para fazer mudanças, clique em Editar. Se o registro do app estiver correto, clique em Voltar para o painel.

Autorizar credenciais para um aplicativo de computador

Para autenticar os usuários finais e acessar os dados do usuário no seu app, você precisa criar um ou mais IDs do cliente OAuth 2.0. Um ID do cliente é usado para identificar um único app nos servidores OAuth do Google. Caso seu app seja executado em várias plataformas, você precisará criar um ID do cliente separado para cada uma delas.
  1. No console do Google Cloud, acesse Menu > APIs e serviços > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais > ID do cliente OAuth.
  3. Clique em Tipo de aplicativo > App para computador.
  4. No campo Nome, digite um nome para a credencial. Ele só aparece no console do Google Cloud.
  5. Clique em Criar. A tela cliente OAuth criado é exibida, mostrando seu novo ID e chave secreta do cliente.
  6. Clique em OK. A credencial recém-criada aparece em IDs do cliente OAuth 2.0.
  7. Salve o arquivo JSON salvo como credentials.json e mova-o para o diretório de trabalho.

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ê baixou anteriormente.

  3. Abra o arquivo build.gradle padrão e substitua o conteúdo dele pelo seguinte código:

    meet/quickstart/build.gradle
    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'MeetQuickstart'
    sourceCompatibility = 11
    targetCompatibility = 11
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.cloud:google-cloud-meet:0.3.0'
        implementation 'com.google.auth:google-auth-library-oauth2-http:1.19.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1'
    }
    

Configure a amostra

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

  2. Inclua o seguinte código no novo arquivo Java:

    meet/quickstart/src/main/java/MeetQuickstart.java
    import java.awt.Desktop;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URI;
    import java.net.URL;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.Collections;
    import java.util.List;
    
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.gax.core.FixedCredentialsProvider;
    import com.google.apps.meet.v2.CreateSpaceRequest;
    import com.google.apps.meet.v2.Space;
    import com.google.apps.meet.v2.SpacesServiceClient;
    import com.google.apps.meet.v2.SpacesServiceSettings;
    import com.google.auth.Credentials;
    import com.google.auth.oauth2.ClientId;
    import com.google.auth.oauth2.DefaultPKCEProvider;
    import com.google.auth.oauth2.TokenStore;
    import com.google.auth.oauth2.UserAuthorizer;
    
    /* class to demonstrate use of Drive files list API */
    public class MeetQuickstart {
      /**
       * Directory to store authorization tokens for this application.
       */
      private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
      /**
       * Global instance of the scopes required by this quickstart.
       * If modifying these scopes, delete your previously saved tokens/ folder.
       */
      private static final List<String> SCOPES = Collections
          .singletonList("https://www.googleapis.com/auth/meetings.space.created");
    
      private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
    
      private static final String USER = "default";
    
      // Simple file-based token storage for storing oauth tokens
      private static final TokenStore TOKEN_STORE = new TokenStore() {
        private Path pathFor(String id) {
          return Paths.get(".", TOKENS_DIRECTORY_PATH, id + ".json");
        }
    
        @Override
        public String load(String id) throws IOException {
          if (!Files.exists(pathFor(id))) {
            return null;
          }
          return Files.readString(pathFor(id));
        }
    
        @Override
        public void store(String id, String token) throws IOException {
          Files.createDirectories(Paths.get(".", TOKENS_DIRECTORY_PATH));
          Files.writeString(pathFor(id), token);
        }
    
        @Override
        public void delete(String id) throws IOException {
          if (!Files.exists(pathFor(id))) {
            return;
          }
          Files.delete(pathFor(id));
        }
      };
    
      /**
       * Initialize a UserAuthorizer for local authorization.
       * 
       * @param callbackUri
       * @return
       */
      private static UserAuthorizer getAuthorizer(URI callbackUri) throws IOException {
        // Load client secrets.
        try (InputStream in = MeetQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH)) {
          if (in == null) {
            throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
          }
    
          ClientId clientId = ClientId.fromStream(in);
    
          UserAuthorizer authorizer = UserAuthorizer.newBuilder()
              .setClientId(clientId)
              .setCallbackUri(callbackUri)
              .setScopes(SCOPES)
              .setPKCEProvider(new DefaultPKCEProvider() {
                // Temporary fix for https://github.com/googleapis/google-auth-library-java/issues/1373
                @Override
                public String getCodeChallenge() {
                  return super.getCodeChallenge().split("=")[0];
                }
              })
              .setTokenStore(TOKEN_STORE).build();
          return authorizer;
        }
      }
    
      /**
       * Run the OAuth2 flow for local/installed app.
       * 
       * @return An authorized Credential object.
       * @throws IOException If the credentials.json file cannot be found.
       */
      private static Credentials getCredentials()
          throws Exception {
    
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().build();
        try {
          URI callbackUri = URI.create(receiver.getRedirectUri());
          UserAuthorizer authorizer = getAuthorizer(callbackUri);
    
          Credentials credentials = authorizer.getCredentials(USER);
          if (credentials != null) {
            return credentials;
          }
    
          URL authorizationUrl = authorizer.getAuthorizationUrl(USER, "", null);
          if (Desktop.isDesktopSupported() && 
              Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
            Desktop.getDesktop().browse(authorizationUrl.toURI());
          } else {
            System.out.printf("Open the following URL to authorize access: %s\n",
                authorizationUrl.toExternalForm());
          }
    
          String code = receiver.waitForCode();
          credentials = authorizer.getAndStoreCredentialsFromCode(USER, code, callbackUri);
          return credentials;
        } finally {
          receiver.stop();
        }
      }
    
      public static void main(String... args) throws Exception {
        // Override default service settings to supply user credentials.
        Credentials credentials = getCredentials();
        SpacesServiceSettings settings = SpacesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
            .build();
    
        try (SpacesServiceClient spacesServiceClient = SpacesServiceClient.create(settings)) {
          CreateSpaceRequest request = CreateSpaceRequest.newBuilder()
              .setSpace(Space.newBuilder().build())
              .build();
          Space response = spacesServiceClient.createSpace(request);
          System.out.printf("Space created: %s\n", response.getMeetingUri());
        } catch (IOException e) {
          // TODO(developer): Handle errors
          e.printStackTrace();
        }
      }
    }

Executar a amostra

  1. Execute a amostra:

    gradle run
    
  1. Quando você executar o exemplo pela primeira vez, ele vai solicitar que você autorize o acesso:
    1. Se você ainda não tiver feito login na sua Conta do Google, faça login quando solicitado. Se você tiver feito login em várias contas, selecione uma para usar na autorização.
    2. Clique em Aceitar.

    Seu aplicativo Java é executado e chama a API Google Meet.

    As informações de autorização são armazenadas no sistema de arquivos. Portanto, na próxima vez que você executar o código de amostra, a autorização não será solicitada.

Próximas etapas