Autenticar e autorizar como usuário do Google Chat

Neste guia, explicamos como usar o OAuth 2.0 com as credenciais do Google dos usuários para acessar a API Chat. A autenticação e a autorização com credenciais de usuários permite que os apps de chat acessem os dados do usuário e executem operações em nome do usuário autenticado. Ao autenticar em nome de um usuário, o app terá as mesmas permissões desse usuário e poderá realizar ações como se fossem realizadas por ele.

Depois de autenticar e autorizar uma chamada de API com credenciais de usuário, os apps do Chat podem fazer o seguinte:

  • Criar espaços do Chat.
  • Adicione usuários a espaços do Chat e conversas em grupo.
  • Trabalhar com dados de usuários em outras APIs do Workspace, como estas:

Quando um app realiza uma ação com autenticação do usuário (como a criação de um espaço), o Google Chat mostra uma mensagem de atribuição informando aos usuários o nome do app que realizou a ação para o usuário que o autorizou.

O app Google Chat cria um espaço para um usuário.
Figura 1. A mensagem de atribuição que o Google Chat mostra quando um app do Chat cria um espaço em nome de um usuário.

Para saber quando os apps do Chat exigem autenticação e que tipo de autenticação usar, consulte Tipos de autenticação necessária na visão geral de autenticação e autorização da API Chat.

Se você é um administrador de domínio, pode conceder a delegação de autoridade em todo o domínio para autorizar a conta de serviço de um aplicativo a acessar os dados dos seus usuários sem exigir o consentimento de cada um. Depois de configurar a delegação em todo o domínio, a conta de serviço pode representar uma conta de usuário. Embora uma conta de serviço seja usada para autenticação, a delegação em todo o domínio se passa por um usuário e, portanto, é considerada uma autenticação de usuário. Em qualquer funcionalidade que exija autenticação do usuário, é possível usar a delegação em todo o domínio.

Pré-requisitos

Para executar o exemplo neste guia, você precisa dos seguintes pré-requisitos:

Além disso, você precisa dos seguintes pré-requisitos específicos da linguagem:

Java

  • JDK 1.7 ou mais recentes
  • A ferramenta de gerenciamento de pacotes Maven (em inglês)
  • Um projeto Maven inicializado. Para inicializar um novo projeto, execute o seguinte comando na interface de linha de comando:

    mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
    

Python

  • Python 3.6 ou superior
  • A ferramenta de gerenciamento de pacotes pip

Node.js

  • Node.js
  • A ferramenta de gerenciamento de pacotes npm
  • Um projeto Node.js inicializado. Para inicializar um novo projeto, crie e mude para uma nova pasta. Em seguida, execute o seguinte comando na interface de linha de comando:

    npm init
    

Apps Script

Etapa 1: configurar a tela de permissão OAuth, especificar escopos e registrar o app

Quando você usa o OAuth 2.0 para autorização, o Google exibe uma tela de consentimento para o usuário, incluindo um resumo do seu projeto, das políticas dele e dos escopos de autorização solicitados. A configuração da tela de consentimento OAuth do seu app define o que o Google exibe aos usuários e revisores e registra o aplicativo para que ele possa ser publicado mais tarde.

Todos os apps que usam o OAuth 2.0 exigem uma configuração de tela de consentimento, mas você só precisa listar os escopos dos apps usados por pessoas de fora da organização do Google Workspace.

  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. Selecione o tipo de usuário para seu app e clique em Criar.

  3. Preencha o formulário de registro do app e clique em Salvar e continuar.

  4. Clique em Adicionar ou remover escopos. Adicione e verifique os escopos de autorização exigidos pelo seu aplicativo, clique em Atualizar e em Salvar e continuar.

  5. Analise o resumo de registro do seu app. Clique em Editar para fazer alterações ou clique em Voltar ao painel.

Etapa 2: criar credenciais de ID do cliente OAuth no console do Google Cloud

Para autenticar como usuário final 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, como Android, iOS e Web, você precisa criar um ID do cliente separado para cada uma delas.

Criar credenciais de ID do cliente OAuth

Escolha seu tipo de aplicativo para ver instruções específicas sobre como criar um ID do cliente OAuth:

Aplicativo da Web

  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 > Aplicativo da Web.
  4. No campo Nome, digite um nome para a credencial. Ele só aparece no console do Google Cloud.
  5. Adicione URIs autorizados relacionados ao seu app:
    • Apps do lado do cliente (JavaScript): em Origens JavaScript autorizadas, clique em Adicionar URI. Em seguida, insira um URI a ser usado para solicitações do navegador. Isso identifica os domínios a partir dos quais seu aplicativo pode enviar solicitações de API para o servidor OAuth 2.0.
    • Apps do lado do servidor (Java, Python e outros): em URIs de redirecionamento autorizados, clique em Adicionar URI. Em seguida, insira um URI de endpoint para o qual o servidor OAuth 2.0 possa enviar respostas.
  6. Clique em Criar. A tela cliente OAuth criado é exibida, mostrando seu novo ID e chave secreta do cliente.

    Anote o ID do cliente. As chaves secretas do cliente não são usadas para aplicativos da Web.

  7. Clique em OK. A credencial recém-criada aparece em IDs do cliente OAuth 2.0.

Android

  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 > Android.
  4. No campo "Nome", digite um nome para a credencial. Ele só aparece no console do Google Cloud.
  5. No campo "Package name", insira o nome do pacote do arquivo AndroidManifest.xml.
  6. No campo "Impressão digital do certificado SHA-1", digite a impressão digital do certificado SHA-1 gerada.
  7. Clique em Criar. A tela "Cliente OAuth criado" vai aparecer, mostrando seu novo ID do cliente.
  8. Clique em OK. A credencial recém-criada será exibida em "IDs do cliente OAuth 2.0".

iOS

  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 > iOS.
  4. No campo "Nome", digite um nome para a credencial. Ele só aparece no console do Google Cloud.
  5. No campo "ID do pacote", insira o identificador do pacote conforme listado no arquivo Info.plist do app.
  6. Opcional: se o seu aplicativo aparecer na Apple App Store, digite o ID da App Store.
  7. Opcional: no campo "ID da equipe", insira a string exclusiva de 10 caracteres gerada pela Apple e atribuída à sua equipe.
  8. Clique em Criar. A tela cliente OAuth criado é exibida, mostrando seu novo ID e chave secreta do cliente.
  9. Clique em OK. A credencial recém-criada será exibida em "IDs do cliente OAuth 2.0".

App do Chrome

  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 > Aplicativo do Google Chrome.
  4. No campo "Nome", digite um nome para a credencial. Ele só aparece no console do Google Cloud.
  5. No campo "ID do aplicativo", insira a string do ID exclusiva de 32 caracteres do seu app. Você encontra esse valor de ID no URL da Chrome Web Store do seu app e no Painel do desenvolvedor da Chrome Web Store.
  6. Clique em Criar. A tela cliente OAuth criado é exibida, mostrando seu novo ID e chave secreta do cliente.
  7. Clique em OK. A credencial recém-criada será exibida em "IDs do cliente OAuth 2.0".

App para computador

  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.

TVs e dispositivos de entrada limitada

  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 > TVs e dispositivos de entrada limitada.
  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 será exibida em "IDs do cliente OAuth 2.0".

Plataforma Universal do Windows (UWP)

  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 > Universal Windows Platform (UWP).
  4. No campo "Nome", digite um nome para a credencial. Ele só aparece no console do Google Cloud.
  5. No campo "ID da loja", insira o valor exclusivo de 12 caracteres do ID da Microsoft Store do seu app. Esse código pode ser encontrado no URL do seu app da Microsoft Store e na Central de parceiros.
  6. Clique em Criar. A tela cliente OAuth criado é exibida, mostrando seu novo ID e chave secreta do cliente.
  7. Clique em OK. A credencial recém-criada será exibida em "IDs do cliente OAuth 2.0".

Fazer o download do arquivo JSON da chave secreta do cliente

O arquivo de chave secreta do cliente é uma representação JSON das credenciais do ID do cliente OAuth que pode ser referenciada pelo app do Chat ao fornecer credenciais.

  1. No console do Google Cloud, acesse Menu > APIs e serviços > Credenciais.

    Ir para Credenciais

  2. Em IDs do cliente OAuth 2.0, clique no ID do cliente que você criou.

  3. Clique em Fazer o download do JSON.

  4. Salve o arquivo como client_secrets.json.

Etapa 3: instalar a biblioteca de cliente do Google e outras dependências

Instale a biblioteca de cliente do Google e outras dependências necessárias para o projeto.

Java

Para adicionar as bibliotecas de cliente do Google e outras dependências necessárias ao projeto Maven, edite o arquivo pom.xml no diretório do projeto e adicione as seguintes dependências:

<dependencies>
  <!-- ... existing dependencies ... -->
  <dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-chat</artifactId>
    <version>v1-rev20230905-2.0.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.19.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.34.1</version>
  </dependency>
  <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10.1</version>
  </dependency>
</dependencies>

Python

Se você ainda não instalou as bibliotecas de cliente do Google para Python, execute o seguinte comando na interface de linha de comando:

pip3 install --upgrade google-api-python-client google-auth-oauthlib

Node.js

Para adicionar as bibliotecas de cliente do Google e outras dependências necessárias ao projeto Node.js, mude para o diretório do projeto e execute o seguinte comando na interface de linha de comando:

npm install "@googleapis/chat" open server-destroy

Apps Script

Neste exemplo, o serviço avançado do Chat é usado para chamar a API Google Chat. Se quiser ativar o serviço para seu projeto do Apps Script, faça o seguinte:

  1. À esquerda, clique em Editor .
  2. À esquerda, ao lado de Serviços, clique em Adicionar um serviço .
  3. Selecione API Google Chat.
  4. Em Versão, selecione v1.
  5. Clique em Adicionar.

É possível usar qualquer linguagem compatível com nossas bibliotecas de cliente.

Etapa 4: escrever um script que chame a API Chat

Chamar uma API com a autorização OAuth é um processo de várias etapas. Em aplicativos da Web ou para computador, o processo normalmente é o seguinte:

  1. O app direciona o usuário a uma página de autorização que solicita acesso aos dados do usuário especificados por escopos de autorização. O app se identifica com as credenciais do ID do cliente.
  2. O usuário analisa as permissões solicitadas pelo app e aprova a solicitação.
  3. O servidor de autenticação do Google redireciona o navegador para o endpoint HTTP do app com um código de autorização.
  4. O aplicativo envia outra solicitação ao servidor de autorização do Google para trocar o código de autorização por um token de acesso.
  5. O aplicativo usa o token de acesso para chamar a API em nome do usuário.

Para saber mais sobre o processo de autorização do OAuth, consulte Como usar o OAuth 2.0 para acessar o guia das APIs do Google.

Os exemplos de código a seguir em Java, Python e Node.js usam uma biblioteca de cliente para executar o fluxo de autorização do OAuth. Ele abre um servidor HTTP local para receber o código de autorização de volta do servidor de autorização, que é trocado por um token de acesso. No exemplo de código do Apps Script, esse fluxo de autorização é gerenciado pelo Apps Script.

Depois de concluir o fluxo de autenticação, o script faz a autenticação na API Chat usando o token de acesso do usuário e, em seguida, cria um espaço.

Java

  1. No diretório do projeto, abra o arquivo src/main/java/com/google/chat/app/authsample/App.java.
  2. Substitua o conteúdo em App.java pelo seguinte código:

    package com.google.chat.app.authsample;
    
    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.HttpTransport;
    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.chat.v1.HangoutsChat;
    import com.google.api.services.chat.v1.model.Space;
    
    import java.io.InputStreamReader;
    import java.util.Collection;
    import java.util.Collections;
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    public class App {
        // Application OAuth credentials.
        private static final String KEYS_RESOURCE_URI = "/client_secrets.json";
    
        // Define your app's authorization scopes.
        private static final Collection<String> SCOPES =
            Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create");
    
        // Directory to store user credentials.
        private static final java.io.File DATA_STORE_DIR =
            new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app");
    
        // Global instance of the JSON factory.
        private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
        // Global instance of the HTTP transport.
        private static HttpTransport httpTransport;
    
        // Global instance of the DataStoreFactory. The best practice is to make it a single
        // globally shared instance across your application.
        private static FileDataStoreFactory dataStoreFactory;
    
        public static void main( String[] args ) {
            try {
                // Run app.
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
                Credential userCredential = authorize();
                Space response = App.createChatSpace(userCredential);
                // Print details about the created space.
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * Authorizes the installed application to access user's protected data.
         */
        private static Credential authorize() throws Exception {
            // Load client secrets.
            GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                new InputStreamReader(App.class.getResourceAsStream("/client_secrets.json")));
            // Set up authorization code flow.
            GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(dataStoreFactory)
                .build();
            // Authorize.
            return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
        }
    
        /**
         * Creates a Chat space.
         */
        private static Space createChatSpace(Credential userCredential) throws Exception {
            // Build the Chat API client and authenticate with the user account.
            HangoutsChat chatService = new HangoutsChat.Builder(
                httpTransport, JSON_FACTORY, userCredential)
                .setApplicationName("auth-sample-app")
                .build();
    
            // Create a Chat space.
            Space space = new Space()
                // To create a named space, set spaceType to SPACE.
                .setSpaceType("SPACE")
                // The user-visible name of the space.
                .setDisplayName("API-made");
            return chatService.spaces().create(space).execute();
        }
    }
    
  3. Crie um novo subdiretório chamado resources no diretório do seu projeto.

  4. Copie o arquivo client_secrets.json para o subdiretório resources.

  5. Para configurar o Maven para incluir o arquivo de chaves secretas do cliente no pacote do projeto, edite o arquivo pom.xml no diretório do projeto e adicione a seguinte configuração à seção <build>:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. Para configurar o Maven para incluir as dependências no pacote do projeto e executar a classe principal do aplicativo, edite o arquivo pom.xml no diretório do projeto e adicione a seguinte configuração à seção <plugins>:

    <plugins>
      <!-- ... existing configurations ... -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.google.chat.app.authsample.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
    

Python

  1. Salve o seguinte código em um arquivo chamado chat_space_create_named.py no mesmo diretório que contém client_secrets.json:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]
    
    def main():
      '''
      Authenticates with Chat API via user credentials,
      then creates a Chat space.
      '''
    
      flow = InstalledAppFlow.from_client_secrets_file(
                        'client_secrets.json', SCOPES)
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      service = build('chat', 'v1', credentials=creds)
    
      # Use the service endpoint to call Chat API.
      result = service.spaces().create(
    
        # Details about the space to create.
        body = {
    
          # To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          # The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      ).execute()
    
      # Prints details about the created space.
      print(result)
    
    if __name__ == '__main__':
      main()
    

Node.js

  1. Salve o seguinte código em um arquivo chamado chat_space_create_named.js no mesmo diretório que contém o projeto Node.js e o client_secrets.json:

    const fs = require('fs');
    const path = require('path');
    const http = require('http');
    const url = require('url');
    const destroyer = require('server-destroy');
    
    const chat = require('@googleapis/chat');
    
    // Application OAuth credentials.
    const keys = require('./client_secrets.json').installed;
    
    // Define your app's authorization scopes.
    // When modifying these scopes, delete the file token.json, if it exists.
    const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"];
    
    // Create a new OAuth2 client with the configured keys.
    const oauth2Client = new chat.auth.OAuth2(
      keys.client_id,
      keys.client_secret,
      'http://localhost:3000'
    );
    
    /**
     * Opens an HTTP server to accept the OAuth callback.
     * In this simple example, the only request to our webserver is to /?code=<code>.
     */
    async function authenticate(scopes) {
      const opn = (await import('open')).default;
    
      return new Promise((resolve, reject) => {
        // Generate the URL for authorization.
        const authorizeUrl = oauth2Client.generateAuthUrl({
          access_type: 'offline',
          scope: scopes.join(' '),
        });
        // Start the HTTP server to listen for the callback.
        const server = http
          .createServer(async (req, res) => {
            try {
              const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
              res.end('Authentication successful! Please return to the console.');
              server.destroy();
              const { tokens } = await oauth2Client.getToken(qs.get('code'));
              oauth2Client.credentials = tokens;
              resolve(oauth2Client);
            } catch (e) {
              reject(e);
            }
          })
          .listen(3000, () => {
            // Open the browser to the authorize URL to start the workflow.
            opn(authorizeUrl, { wait: false }).then(cp => cp.unref());
          });
        destroyer(server);
      });
    }
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    async function createSpace() {
      // Create the Chat API client and authenticate with the authorized user.
      const chatClient = await chat.chat({
        version: 'v1',
        auth: oauth2Client
      });
    
      // Call the Chat API to create a space.
      const result = await chatClient.spaces.create({
    
        // Details about the space to create.
        requestBody: {
    
          // To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          // The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      });
      return result;
    }
    
    // Authenticate the user, execute the function,
    // then print details about the created space.
    authenticate(scopes)
      .then(createSpace)
      .then(console.log);
    

Apps Script

  1. No editor do Apps Script, edite o arquivo appsscript.json e adicione o escopo do OAuth necessário para chamar a API:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. Salve o seguinte código em um arquivo chamado ChatSpaceCreateNamed.gs no seu projeto do Apps Script:

    /**
     * Authenticates with Chat API via user credentials, then creates a
     * Chat space.
     */
    function createSpace() {
      try {
        // Details about the space to create.
        // To create a named space, set spaceType to SPACE.
        // The user-visible name of the space is displayName.
        const space = {'displayName': 'API-made', 'spaceType': 'SPACE'};
    
        // Call Chat API with user credentials to create the space.
        const result = Chat.Spaces.create(space);
    
        // Log details about the created space.
        console.log(result);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }
    

Etapa 5: executar o script de exemplo

Para executar o exemplo, na linha de comando, navegue até o diretório que contém os arquivos do projeto e execute o seguinte comando:

Java

mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar

Python

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

Apps Script

Abra o arquivo ChatSpaceCreateNamed.gs no Editor do Apps Script e clique em Executar.

Um navegador será aberto e solicitará que você faça login na sua Conta do Google:

Faça login para autorizar um app do Chat.

Figura 2. Tela de permissão OAuth em que você seleciona a conta para autenticar o app.

Depois de fazer login, a tela de permissão OAuth é exibida e pede para você conceder permissão ao app.

Depois que você concede a permissão, o script chama a API Chat, que responde criando o espaço do Chat com o nome de exibição API-made. O console imprime os detalhes da chamada de API. Para encontrar o espaço, acesse o painel Espaços no Google Chat.

Resolver problemas do exemplo

Ao executar chat_space_create_named.py, talvez você receba um erro informando o seguinte:

Expected a JSON object with a single property for a "web" or "installed" application

Essa mensagem de erro significa que o arquivo client_secrets.json que você transferiu por download do console do Google Cloud não começa com a propriedade "web" ou "installed". Depois de autenticar com o arquivo transferido, se o código não salvar o token de acesso em um novo arquivo como token.json, o token de acesso será gravado em client_secrets.json, o que pode causar esse erro nas tentativas de autorização subsequentes.

Para resolver o erro, faça o download do arquivo de chave secreta do cliente no console do Google Cloud novamente e salve o novo arquivo no lugar atual.

  • Se o aplicativo precisar continuar usando os tokens de usuário fora do escopo de um único fluxo, ele poderá armazenar os tokens para reutilizá-los mais tarde. Nesse caso, seu aplicativo precisa tratar os tokens de usuário com segurança e lidar com a revogação e a expiração do token de atualização. Para mais informações, consulte o Guia de práticas recomendadas do OAuth 2.0.

  • Para saber o que mais a API Chat pode fazer, consulte a documentação de referência da API Chat.