Exibir Google One Tap

Adicione um comando de um toque ao seu site para permitir que os usuários se inscrevam ou façam login no app da Web. Use HTML e JavaScript para renderizar e personalizar o comando.

Pré-requisitos

Siga as etapas descritas em Configuração para configurar a tela de consentimento OAuth, receber um ID do cliente e carregar a biblioteca de cliente.

Adicione um botão de "Fazer login com o Google" à página de login.

Renderização de comando

Coloque um snippet de código em todas as páginas em que você quer que o recurso Um Toque seja exibido.

HTML

Mostre o comando "One Tap", retornando a credencial JWT para um endpoint de login.

<div id="g_id_onload"
   data-client_id="YOUR_GOOGLE_CLIENT_ID"
   data-login_uri="https://your.domain/your_login_endpoint"
   data-your_own_param_1_to_login="any_value"
   data-your_own_param_2_to_login="any_value">
</div>

O atributo data-login_uri é o URI do endpoint de login do seu app da Web. É possível adicionar atributos de dados personalizados, que são enviados ao endpoint de login com o token de ID emitido pelo Google.

Para uma lista completa de atributos compatíveis, consulte a referência do g_id_onload.

JavaScript

Mostre o comando "One Tap", retornando a credencial JWT para o gerenciador de callbacks de JavaScript do navegador.

<script>
  window.onload = function () {
    google.accounts.id.initialize({
      client_id: 'YOUR_GOOGLE_CLIENT_ID',
      callback: 'YOUR_CALLBACK_HANDLER'
    });
    google.accounts.id.prompt();
  }
</script>

Para configurar o comando de um toque no JavaScript, primeiro chame o método initialize(). Em seguida, chame o método prompt() para mostrar a interface do comando.

Para conferir a lista completa de opções de dados, consulte a referência do idConfiguration.

Status da solicitação

Para receber notificações de status da IU do prompt, forneça uma função de callback para o método prompt().

HTML

Um gerenciador de callback JavaScript é necessário para receber notificações.

JavaScript

Aqui, uma função de seta é usada para processar atualizações de notificação.

<script>
window.onload = function () {
  google.accounts.id.initialize({
    client_id: 'YOUR_GOOGLE_CLIENT_ID',
    callback: 'YOUR_CALLBACK_HANDLER'
  });
  google.accounts.id.prompt((notification) => {
    if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
      // try next provider if OneTap is not displayed or skipped
    }
  });
}
</script>

Botão e comando

O botão "Fazer login com o Google" e o comando de um toque podem ser mostrados juntos em uma única página.

HTML

Mostre o botão "Fazer login com o Google" e o comando de um toque incluindo os elementos g_id_onload e g_id_signin.

<div id="g_id_onload"
   data-client_id="YOUR_GOOGLE_CLIENT_ID"
   data-context="signin"
   data-ux_mode="redirect"
   data-login_uri="https://your.domain/your_login_endpoint"
   data-itp_support="true">
</div>

<div class="g_id_signin"
   data-type="standard"
   data-shape="rectangular"
   data-theme="outline"
   data-text="signin_with"
   data-size="large"
   data-logo_alignment="left">
</div>

JavaScript

Mostre o botão "Fazer login com o Google" e o comando "Um toque" chamando as funções renderButton() e prompt() ao mesmo tempo.

<script>
window.onload = function () {
  google.accounts.id.initialize({
    client_id: 'YOUR_GOOGLE_CLIENT_ID',
    callback: 'YOUR_CALLBACK_HANDLER'
  });
  const parent = document.getElementById('google_btn');
  google.accounts.id.renderButton(parent, {theme: "filled_blue"});
  google.accounts.id.prompt();
}
</script>

Não cobrir o recurso Um toque

Esta seção só se aplica quando o FedCM está desativado. Quando ele está ativado, o navegador mostra solicitações ao usuário na parte de cima do conteúdo da página.

Para garantir que os usuários finais vejam todas as informações exibidas, o Google One Tap não pode ser coberto por nenhum outro conteúdo. Caso contrário, janelas pop-up podem ser acionadas em alguns casos.

Verifique as propriedades de z-index do layout da página e dos elementos para garantir que o Google One Tap não seja coberto por nenhum outro conteúdo a qualquer momento. A mudança de fluxo de UX pode ser acionada mesmo quando apenas um único pixel nas bordas é coberto.