Guia de início rápido do JavaScript

Os guias de início rápido explicam 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 processar 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 que você aprenda sobre autenticação e autorização antes de escolher as credenciais de acesso apropriadas para seu aplicativo.

Crie um aplicativo da Web JavaScript que faça solicitações à API Reseller.

Objetivos

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

Pré-requisitos

  • Uma instância de domínio do revendedor do Google.
  • Um contrato de parceiro do Google Workspace firmado

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, 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 Reseller.

    Ativar a API

Autorizar credenciais para um aplicativo da Web

Para autenticar como um usuário final e acessar os dados do usuário no seu aplicativo, você precisa criar um ou mais IDs do cliente do OAuth 2.0. Um ID do cliente é usado para identificar um único app para os servidores OAuth do Google. Se o aplicativo for executado em várias plataformas, será necessário criar um ID do cliente separado para cada uma.
  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. Esse nome só é mostrado 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 para usar nas 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 servidor (Java, Python e mais): em URIs de redirecionamento autorizados, clique em Adicionar URI. Em seguida, insira um URI de ponto de extremidade para o qual o servidor OAuth 2.0 possa enviar respostas.
  6. Clique em Criar. A tela criada pelo cliente OAuth é 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 em aplicativos da Web.

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

Anote essas credenciais porque elas serão necessárias mais adiante neste guia de início rápido.

crie uma chave de API

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

    Ir para Credenciais

  2. Clique em Criar credenciais > Chave de API.
  3. Sua nova chave de API será exibida.
    • Clique em Copiar para copiar a chave de API e usá-la no código do app. A chave de API também pode ser encontrada na seção "Chaves de API" das credenciais do seu projeto.
    • Clique em Restringir chave para atualizar as configurações avançadas e limitar o uso da chave de API. Para mais detalhes, consulte Como aplicar restrições de chave de API.

Configure a amostra

  1. No diretório de trabalho, crie um arquivo chamado index.html.
  2. No arquivo index.html, cole o exemplo de código a seguir:

    adminSDK/reseller/index.html
    <!DOCTYPE html>
    <html>
      <head>
        <title>Google Workspace Reseller API Quickstart</title>
        <meta charset="utf-8" />
      </head>
      <body>
        <p>Google WOrkspace Reseller API Quickstart</p>
    
        <!--Add buttons to initiate auth sequence and sign out-->
        <button id="authorize_button" onclick="handleAuthClick()">Authorize</button>
        <button id="signout_button" onclick="handleSignoutClick()">Sign Out</button>
    
        <pre id="content" style="white-space: pre-wrap;"></pre>
    
        <script type="text/javascript">
          /* exported gapiLoaded */
          /* exported gisLoaded */
          /* exported handleAuthClick */
          /* exported handleSignoutClick */
    
          // TODO(developer): Set to client ID and API key from the Developer Console
          const CLIENT_ID = '<YOUR_CLIENT_ID>';
          const API_KEY = '<YOUR_API_KEY>';
    
          // Discovery doc URL for APIs used by the quickstart
          const DISCOVERY_DOC = 'https://www.googleapis.com/discovery/v1/apis/reseller/v1/rest';
    
          // Authorization scopes required by the API; multiple scopes can be
          // included, separated by spaces.
          const SCOPES = 'https://www.googleapis.com/auth/apps.order';
    
          let tokenClient;
          let gapiInited = false;
          let gisInited = false;
    
          document.getElementById('authorize_button').style.visibility = 'hidden';
          document.getElementById('signout_button').style.visibility = 'hidden';
    
          /**
           * Callback after api.js is loaded.
           */
          function gapiLoaded() {
            gapi.load('client', initializeGapiClient);
          }
    
          /**
           * Callback after the API client is loaded. Loads the
           * discovery doc to initialize the API.
           */
          async function initializeGapiClient() {
            await gapi.client.init({
              apiKey: API_KEY,
              discoveryDocs: [DISCOVERY_DOC],
            });
            gapiInited = true;
            maybeEnableButtons();
          }
    
          /**
           * Callback after Google Identity Services are loaded.
           */
          function gisLoaded() {
            tokenClient = google.accounts.oauth2.initTokenClient({
              client_id: CLIENT_ID,
              scope: SCOPES,
              callback: '', // defined later
            });
            gisInited = true;
            maybeEnableButtons();
          }
    
          /**
           * Enables user interaction after all libraries are loaded.
           */
          function maybeEnableButtons() {
            if (gapiInited && gisInited) {
              document.getElementById('authorize_button').style.visibility = 'visible';
            }
          }
    
          /**
           *  Sign in the user upon button click.
           */
          function handleAuthClick() {
            tokenClient.callback = async (resp) => {
              if (resp.error !== undefined) {
                throw (resp);
              }
              document.getElementById('signout_button').style.visibility = 'visible';
              document.getElementById('authorize_button').innerText = 'Refresh';
              await listSubscriptions();
            };
    
            if (gapi.client.getToken() === null) {
              // Prompt the user to select a Google Account and ask for consent to share their data
              // when establishing a new session.
              tokenClient.requestAccessToken({prompt: 'consent'});
            } else {
              // Skip display of account chooser and consent dialog for an existing session.
              tokenClient.requestAccessToken({prompt: ''});
            }
          }
    
          /**
           *  Sign out the user upon button click.
           */
          function handleSignoutClick() {
            const token = gapi.client.getToken();
            if (token !== null) {
              google.accounts.oauth2.revoke(token.access_token);
              gapi.client.setToken('');
              document.getElementById('content').innerText = '';
              document.getElementById('authorize_button').innerText = 'Authorize';
              document.getElementById('signout_button').style.visibility = 'hidden';
            }
          }
    
          /**
           * Print first ten subscriptions.
           */
          async function listSubscriptions() {
            let response;
            try {
              response = await gapi.client.reseller.subscriptions.list({
                'maxResults': 10,
              });
            } catch (err) {
              document.getElementById('content').innerText = err.message;
              return;
            }
    
            const subscriptions = response.result.subscriptions;
            if (!subscriptions || subscriptions.length == 0) {
              document.getElementById('content').innerText = 'No subscriptions found.';
              return;
            }
            // Flatten to string to display
            const output = subscriptions.reduce(
                (str, subscription) => {
                  const customer = subscription.customerId;
                  const sku = subscription.skuId;
                  const plan = subscription.plan.planName;
                  return `${str}${customer} (${sku},${plan})\n`;
                },
                'Subscriptions:\n');
            document.getElementById('content').innerText = output;
          }
        </script>
        <script async defer src="https://apis.google.com/js/api.js" onload="gapiLoaded()"></script>
        <script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"></script>
      </body>
    </html>

    Substitua:

Executar a amostra

  1. No diretório de trabalho, instale o pacote http-server:

    npm install http-server
    
  2. No diretório de trabalho, inicie um servidor da Web:

    npx http-server -p 8000
    
  3. No navegador, acesse http://localhost:8000.

  4. Na primeira vez que você executar a amostra, ela solicitará que você autorize o acesso:

    1. Se você ainda não estiver conectado à sua Conta do Google, será solicitado a fazer login. Se você estiver conectado a várias contas, selecione uma para usar com autorização.
    2. Clique em Accept.
    3. Copie o código do navegador, cole-o no prompt de linha de comando e pressione Enter.

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

Você criou seu primeiro aplicativo JavaScript que faz solicitações à API Reseller.

Próximas etapas