Este guia ajuda a entender as mudanças e etapas necessárias para migrar com sucesso as bibliotecas JavaScript da biblioteca da plataforma Login do Google para a biblioteca de Serviços de Identificação do Google mais recente para autenticação.
Se o cliente estiver usando a biblioteca de cliente da API do Google para JavaScript ou outras bibliotecas anteriores para autorização, consulte Migrar para os Serviços de identidade do Google para mais informações.
Autenticação e autorização
A autenticação verifica a identidade de alguém e também pode ser chamada de inscrição ou login do usuário. A autorização é o processo de conceder ou negar acesso a dados ou recursos. Por exemplo, seu app pede o consentimento do usuário para acessar o Google Drive dele.
Assim como a biblioteca da plataforma Google Sign-In, a nova biblioteca de Serviços de Identificação do Google (em inglês) foi criada para oferecer suporte aos processos de autenticação e autorização.
No entanto, a biblioteca mais recente separa os dois processos para reduzir a complexidade de integração das Contas do Google ao app para desenvolvedores.
Se o caso de uso envolver apenas autenticação, continue lendo esta página.
Se o seu caso de uso incluir autorização, leia Como funciona a autorização do usuário e Migrar para os Serviços de Identificação do Google para garantir que seu aplicativo esteja usando as APIs novas e aprimoradas.
O que mudou
Para os usuários, a nova biblioteca de Serviços de Identificação do Google oferece várias melhorias de usabilidade. Alguns destaques:
- Novos fluxos de login automático e com um toque de baixa fricção com menos etapas individuais.
- um botão de login atualizado com personalização do usuário;
- uma marca consistente e um comportamento de login uniforme na Web melhoram a compreensão e a confiança;
- acessar o conteúdo rapidamente; os usuários podem se inscrever e fazer login diretamente de qualquer lugar do seu site sem precisar acessar uma página de login ou de conta.
Para os desenvolvedores, nosso foco foi reduzir a complexidade, melhorar a segurança e tornar a integração o mais rápida possível. Algumas dessas melhorias incluem:
- A opção de adicionar login de usuário ao conteúdo estático do seu site usando apenas HTML,
- separação da autenticação de login da autorização e do compartilhamento de dados do usuário. A complexidade de uma integração do OAuth 2.0 não é mais necessária para fazer login dos usuários no seu site.
- Os modos pop-up e redirecionamento continuam sendo aceitos, mas a infraestrutura OAuth 2.0 do Google agora redireciona para o endpoint de login do servidor de back-end.
- consolidação dos recursos das bibliotecas JavaScript anteriores do Google Identity e da API Google em uma única biblioteca nova;
- Para respostas de login, agora você pode decidir se quer usar uma Promise. Além disso, a indireção por funções de estilo getter foi removida para simplificar.
Exemplo de migração de login
Se você estiver migrando do botão Fazer login com o Google atual e só quiser fazer login dos usuários no seu site, a mudança mais simples é atualizar para o novo botão personalizado. Isso pode ser feito trocando as bibliotecas JavaScript e atualizando a base de código para usar um novo objeto de login.
Bibliotecas e configuração
A biblioteca da plataforma de Login do Google anterior: apis.google.com/js/platform.js e a biblioteca de cliente das APIs do Google para JavaScript: gapi.client não são mais necessárias para autenticação e autorização do usuário. Elas foram
substituídas por uma única biblioteca JavaScript dos Serviços de Identificação do Google:
accounts.google.com/gsi/client.
Os três módulos JavaScript anteriores: api, client e platform usados para
fazer login são carregados de apis.google.com. Para ajudar você a identificar locais
em que a biblioteca anterior pode estar incluída no seu site, geralmente:
- o botão de login padrão carrega
apis.google.com/js/platform.js, - um gráfico de botão personalizado é carregado
apis.google.com/js/api:client.jse - o uso direto de
gapi.clientcarregaapis.google.com/js/api.js.
Na maioria dos casos, é possível continuar usando as credenciais do ID do cliente do aplicativo da Web. Como parte da migração, recomendamos que você revise nossas políticas do OAuth 2.0 e use o Console de APIs do Google para confirmar e, se necessário, atualizar as seguintes configurações do cliente:
- seus apps de teste e produção usam projetos separados e têm IDs de cliente próprios.
- o tipo de ID do cliente OAuth 2.0 é "Aplicativo da Web", e
- O HTTPS é usado para origens JavaScript autorizadas e URIs de redirecionamento.
Identificar o código afetado e testar
Um cookie de depuração pode ajudar a localizar o código afetado e testar o comportamento após a descontinuação.
Em apps grandes ou complexos, pode ser difícil encontrar todo o código afetado pela descontinuação do módulo gapi.auth2. Para registrar o uso atual de recursos que serão descontinuados em breve no console, defina o valor do cookie G_AUTH2_MIGRATION como informational. Opcionalmente, adicione dois-pontos seguidos por um valor de chave para
também registrar no armazenamento de sessão. Depois de fazer login e receber
credenciais, revise ou envie os registros coletados para um back-end para análise posterior. Por exemplo, informational:showauth2use salva a origem e o URL em uma chave de armazenamento de sessão chamada showauth2use.
Para verificar o comportamento do app quando o módulo gapi.auth2 não é mais carregado, defina o valor do cookie G_AUTH2_MIGRATION como enforced. Isso permite testar o
comportamento pós-suspensão de uso antes da data de aplicação.
Valores possíveis de cookies G_AUTH2_MIGRATION:
enforcedNão carregue o módulogapi.auth2.informationalRegistra o uso de recursos descontinuados no console JS. Também faça o registro no armazenamento de sessão quando um nome de chave opcional for definido:informational:key-name.
Para minimizar o impacto no usuário, recomendamos que você primeiro defina esse cookie localmente durante o desenvolvimento e o teste, antes de usá-lo em ambientes de produção.
HTML e JavaScript
Neste cenário de login somente para autenticação, são mostrados exemplos de código e renderizações do botão de Login do Google. Selecione o modo pop-up ou redirecionamento para ver as diferenças em como a resposta de autenticação é processada por um callback JavaScript ou por um redirecionamento seguro para o endpoint de login do servidor de back-end.
A maneira anterior
Modo pop-up
Renderize o botão "Fazer login com o Google" e use um callback para processar o login diretamente do navegador do usuário.
<html>
<body>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
<div class="g-signin2" data-onsuccess="handleCredentialResponse"></div>
</body>
</html>
Modo de redirecionamento
Renderize o botão de login do Google, terminando com uma chamada AJAX do navegador do usuário para o endpoint de login dos servidores de back-end.
<html>
<body>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
<div class="g-signin2" data-onsuccess="handleCredentialResponse"></div>
<script>
function handleCredentialResponse(googleUser) {
...
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://yourbackend.example.com/tokensignin');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
console.log('Signed in as: ' + xhr.responseText);
};
xhr.send('idtoken=' + id_token);
}
</script>
</body>
</html>
Renderizado
Novos atributos visuais simplificam o método anterior de criação de um botão
personalizado, eliminam chamadas para gapi.signin2.render() e a necessidade de
hospedar e manter imagens e recursos visuais no seu site.


O texto do botão de atualização do status de login do usuário.
Como será agora
Para usar a nova biblioteca em um cenário de login somente de autenticação, selecione o modo pop-up ou de redirecionamento e use o exemplo de código para substituir sua implementação atual na página de login.
Modo pop-up
Use um callback para processar o login diretamente do navegador do usuário.
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
data-client_id="YOUR_CLIENT_ID"
data-callback="handleCredentialResponse">
</div>
<div class="g_id_signin" data-type="standard"></div>
</body>
</html>
Modo de redirecionamento
O Google invoca o endpoint de login conforme especificado pelo atributo data-login_url. Antes, você era responsável pela operação POST e pelo nome do parâmetro. A nova biblioteca envia o token de ID para seu endpoint no parâmetro
credential. Por fim, verifique o token de ID no servidor
de back-end.
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
data-client_id="YOUR_CLIENT_ID"
data-ux_mode="redirect"
data-login_uri="https://www.example.com/your_login_endpoint">
</div>
<div class="g_id_signin" data-type="standard"></div>
</body>
</html>
Renderizado
Use visual-attributes para personalizar o tamanho, a forma e a cor do botão "Fazer login com o Google". Mostre o pop-up do Um Toque junto com o botão personalizado para melhorar a taxa de login.
O estado de login do usuário não atualiza o texto do botão de "Fazer login" para "Conectado". Depois de dar consentimento ou em visitas recorrentes, o botão personalizado inclui o nome, o e-mail e a foto do perfil do usuário.
Neste exemplo de autenticação, a nova biblioteca accounts.google.com/gsi/client, a classe g_id_signin e o objeto g_id_onload substituem a biblioteca apis.google.com/js/platform.js e o objeto g-signin2 anteriores.
Além de renderizar o novo botão personalizado, o exemplo de código também mostra o novo pop-up do um toque. Recomendamos que você mostre o pop-up de um toque sempre que exibir o botão personalizado para minimizar o atrito do usuário durante o registro e o login.
Embora não seja recomendado devido ao aumento da dificuldade de login, o novo botão personalizado pode ser mostrado sozinho, sem exibir simultaneamente a caixa de diálogo do um toque. Para fazer isso, defina o atributo data-auto_prompt como false.
APIs HTML e JavaScript
O exemplo anterior mostra como usar a nova API HTML para adicionar o login ao seu site. Como alternativa, use a API JavaScript, que tem a mesma funcionalidade, ou combine APIs HTML e JavaScript no seu site.
Para conferir interativamente as opções de personalização de botões, como tipo de callback e atributos como cor, tamanho, forma, texto e tema, acesse nosso gerador de código. Ele pode ser usado para comparar rapidamente diferentes opções e gerar snippets de HTML para uso no seu site.
Fazer login em qualquer página com o recurso "Login com um toque"
O recurso "Um toque" é uma nova maneira de os usuários se inscreverem ou fazerem login no seu site com menos atrito. Ele permite que você ative o login do usuário diretamente de qualquer página do seu site e elimina a necessidade de os usuários acessarem uma página de login dedicada. Em outras palavras, isso reduz o atrito de inscrição e login, aos usuários a flexibilidade de se inscrever e fazer login em páginas diferentes da sua página de login.
Para ativar o login em qualquer página, recomendamos incluir g_id_onload em
um cabeçalho, rodapé ou outro objeto compartilhado em todo o site.
Também recomendamos adicionar g_id_signin, que mostra o botão de login personalizado, apenas nas páginas de login ou de gerenciamento de contas de usuário. Ofereça opções aos usuários
para inscrição ou login mostrando o botão ao lado de outros botões de provedor
de identidade federada e campos de entrada de nome de usuário e senha.
Resposta de token
O login do usuário não exige mais que você entenda ou trabalhe com códigos de autorização, tokens de acesso ou tokens de atualização do OAuth 2.0. Em vez disso, um token de ID JSON Web Token (JWT) é usado para compartilhar o status de login e o perfil do usuário. Para simplificar ainda mais, não é mais necessário usar métodos de acesso no estilo "getter" para trabalhar com dados de perfil do usuário.
Uma credencial de token de ID JWT segura assinada pelo Google é retornada:
- para o gerenciador de callback JavaScript baseado em navegador do usuário no modo pop-up, ou
- para seu servidor de back-end por um redirecionamento do Google para seu endpoint de login quando
o botão Fazer login com o Google
ux_modeestiver definido comoredirect.
Em ambos os casos, atualize os gerenciadores de callback atuais removendo:
- ligações para
googleUser.getBasicProfile(), - referências a
BasicProfilee chamadas associadas aos métodosgetId(),getName(),getGivenName(),getFamilyName(),getImageUrl()egetEmail(); - uso do objeto
AuthResponse.
Em vez disso, use referências diretas aos subcampos credential no novo objeto JWT
CredentialResponse para trabalhar com dados de perfil do usuário.
Além disso, e somente para o modo de redirecionamento, evite a falsificação de solicitações entre sites (CSRF) e verifique o token de ID do Google no servidor de back-end.
Para entender melhor como os usuários interagem com seu site, o campo
select_by em CredentialResponse pode ser usado para determinar o resultado do consentimento
do usuário e o fluxo de login específico usado.
Consentimento do usuário e revogação de permissão
Quando um usuário faz login no seu site pela primeira vez, o Google solicita o consentimento dele para compartilhar o perfil da conta com seu app. Somente depois de dar o consentimento, o perfil do usuário é compartilhado com seu app em uma carga útil de credencial do token de ID. Revogar o acesso a esse perfil é equivalente a revogar um token de acesso na biblioteca de login anterior.
Os usuários podem revogar permissões e desconectar seu app da Conta do Google
acessando https://myaccount.google.com/permissions.
Como alternativa, eles podem se desconectar diretamente do app acionando uma chamada de API
implementada por você. O método disconnect anterior foi
substituído pelo método revoke mais recente.
Quando um usuário exclui a conta na sua plataforma, a prática recomendada é usar
revoke para desconectar o app da Conta do Google dele.
Antes, o auth2.signOut() podia ser usado para gerenciar o encerramento da sessão
do usuário no app. Remova qualquer uso do auth2.signOut() e faça com que o app
gerencie diretamente o estado da sessão por usuário e o status de login.
Estado da sessão e listeners
A nova biblioteca não mantém o status conectado nem o estado da sessão do seu app da Web.
O status de login de uma Conta do Google e o estado da sessão e o status de login do seu app são conceitos distintos e separados.
O status de login do usuário na Conta do Google e no seu app são independentes, exceto durante o momento do login, quando você sabe que o usuário foi autenticado e fez login na Conta do Google.
Quando o recurso "Fazer login com o Google", o login com um toque ou o login automático são incluídos no seu site, os usuários precisam primeiro fazer login na Conta do Google para:
- dar consentimento para compartilhar o perfil de usuário ao se inscrever ou fazer login no seu site pela primeira vez;
- e depois para fazer login em visitas recorrentes ao seu site.
Os usuários podem permanecer conectados, sair ou mudar para outra Conta do Google mantendo uma sessão ativa e conectada no seu site.
Agora você é responsável por gerenciar diretamente o status de login dos usuários do seu app da Web. Antes, o Login do Google ajudava a monitorar o estado da sessão do usuário.
Remova todas as referências a auth2.attachClickHandler() e aos manipuladores de callback
registrados.
Antes, os Listeners eram usados para compartilhar mudanças no status de login de uma Conta do Google de um usuário. Os listeners não são mais compatíveis.
Remova todas as referências a listen(), auth2.currentUser e
auth2.isSignedIn.
Cookies
O recurso Fazer login com o Google usa cookies de forma limitada. Confira uma descrição deles a seguir. Consulte Como o Google usa cookies para mais informações sobre os outros tipos de cookies usados pelo Google.
O cookie G_ENABLED_IDPS definido pela biblioteca de plataforma de login do Google anterior
não é mais usado.
A nova biblioteca dos Serviços de Identificação do Google pode definir esses cookies entre domínios com base nas suas opções de configuração:
- O
g_statearmazena o status de saída do usuário e é definido ao usar o pop-up de um toque ou o login automático. g_csrf_tokené um cookie de envio duplo usado para evitar ataques de CSRF e é definido quando o endpoint de login é chamado. O valor do URI de login pode ser definido explicitamente ou usar o URI da página atual como padrão. Seu endpoint de login pode ser chamado nessas condições ao usar:API HTML com
data-ux_mode=redirectou quandodata-login_urié definido, ouAPI JavaScript com
ux_mode=redirecte em quegoogle.accounts.id.prompt()não é usado para mostrar o recurso "Um toque" ou o login automático.
Se você tiver um serviço que gerencia cookies, adicione os dois novos cookies e remova o cookie anterior quando a migração for concluída.
Se você gerencia vários domínios ou subdomínios, consulte Mostrar o One Tap em
subdomínios para mais instruções sobre como trabalhar com o cookie g_state.
Referência de migração de objetos para login do usuário
| Antigo | Novidade | Observações |
|---|---|---|
| Bibliotecas JavaScript | ||
| apis.google.com/js/platform.js | accounts.google.com/gsi/client | Substitua o antigo pelo novo. |
| apis.google.com/js/api.js | accounts.google.com/gsi/client | Substitua o antigo pelo novo. |
| Objeto GoogleAuth e métodos associados: | ||
| GoogleAuth.attachClickHandler() | IdConfiguration.callback para JS e HTML data-callback | Substitua o antigo pelo novo. |
| GoogleAuth.currentUser.get() | CredentialResponse | Use CredentialResponse. Não é mais necessário. |
| GoogleAuth.currentUser.listen() | Remover. O status de login atual de um usuário no Google está indisponível. Os usuários precisam fazer login no Google para consentir e fazer login. O campo select_by em CredentialResponse pode ser usado para determinar o resultado do consentimento do usuário junto com o método de login usado. | |
| GoogleAuth.disconnect() | google.accounts.id.revoke | Substitua o antigo pelo novo. A revogação também pode ocorrer em https://myaccount.google.com/permissions |
| GoogleAuth.grantOfflineAccess() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| GoogleAuth.isSignedIn.get() | Remover. O status de login atual de um usuário no Google está indisponível. Os usuários precisam fazer login no Google para consentir e fazer login. | |
| GoogleAuth.isSignedIn.listen() | Remover. O status de login atual de um usuário no Google está indisponível. Os usuários precisam fazer login no Google para consentir e fazer login. | |
| GoogleAuth.signIn() | Remover. O carregamento do DOM HTML do elemento g_id_signin ou a chamada JS para google.accounts.id.renderButton aciona o login do usuário em uma Conta do Google. | |
| GoogleAuth.signOut() | Remover. O status de login do usuário no seu app e em uma Conta do Google são independentes. O Google não gerencia o estado da sessão do seu app. | |
| GoogleAuth.then() | Remover. O GoogleAuth foi descontinuado. | |
| Objeto GoogleUser e métodos associados: | ||
| GoogleUser.disconnect() | google.accounts.id.revoke | Substitua o antigo pelo novo. A revogação também pode ocorrer em https://myaccount.google.com/permissions |
| GoogleUser.getAuthResponse() | ||
| GoogleUser.getBasicProfile() | CredentialResponse | Use diretamente credential e subcampos em vez de métodos BasicProfile. |
| GoogleUser.getGrantedScopes() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| GoogleUser.getHostedDomain() | CredentialResponse | Em vez disso, use credential.hd diretamente. |
| GoogleUser.getId() | CredentialResponse | Em vez disso, use credential.sub diretamente. |
| GoogleUser.grantOfflineAccess() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| GoogleUser.grant() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| GoogleUser.hasGrantedScopes() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| GoogleUser.isSignedIn() | Remover. O status de login atual de um usuário no Google está indisponível. Os usuários precisam fazer login no Google para consentir e fazer login. | |
| GoogleUser.reloadAuthResponse() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| Objeto gapi.auth2 e métodos associados: | ||
| Objeto gapi.auth2.AuthorizeConfig | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| Objeto gapi.auth2.AuthorizeResponse | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| Objeto gapi.auth2.AuthResponse | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| gapi.auth2.authorize() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| gapi.auth2.ClientConfig() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| gapi.auth2.getAuthInstance() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| gapi.auth2.init() | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| Objeto gapi.auth2.OfflineAccessOptions | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| Objeto gapi.auth2.SignInOptions | Remover. Um token de ID substituiu os tokens de acesso e escopos do OAuth 2.0. | |
| Objeto gapi.signin2 e métodos associados: | ||
| gapi.signin2.render() | Remover. O carregamento do DOM HTML do elemento g_id_signin ou a chamada JS para google.accounts.id.renderButton aciona o login do usuário em uma Conta do Google. | |