Este guia discute a adoção de APIs FedCM pela biblioteca da plataforma de Login do Google. Os tópicos incluem a Cronologia e Próximas etapas para uma atualização compatível com versões anteriores da biblioteca, como realizar uma avaliação de impacto e verificar se o login do usuário continua funcionando como esperado e, se necessário, instruções para atualizar seu app da Web. As opções para gerenciar o período de transição e como receber ajuda também são abordadas.
Status da biblioteca
Todos os novos apps da Web estão bloqueados para usar a biblioteca descontinuada da plataforma do Login do Google, enquanto os apps que usam a biblioteca podem continuar até novo aviso. Uma data final de desativação (encerramento) da biblioteca não foi estabelecida. Consulte Descontinuação do suporte e desativação para saber mais.
Uma atualização compatível com versões anteriores adiciona as APIs FedCM à biblioteca do Login do Google. Embora a maioria das mudanças seja simples, a atualização apresenta diferenças nas solicitações do usuário, na policy-permissions do iframe e na Política de Segurança de Conteúdo (CSP). Essas mudanças podem afetar seu app da Web e exigir mudanças no código do aplicativo e na configuração do site.
Durante o período de transição, uma opção de configuração controla se as APIs FedCM são usadas ou não durante o login do usuário.
Após o período de transição, as APIs FedCM são obrigatórias para todos os apps da Web que usam a biblioteca de login do Google.
Cronograma
Última atualização: setembro de 2024
Confira as datas e mudanças que afetam o comportamento de login do usuário:
- Março de 2023 Descontinuação do suporte à biblioteca da plataforma do Login do Google.
- O período de transição de julho de 2024 começa, e o suporte da biblioteca da plataforma do Login do Google
para APIs FedCM é adicionado. Por padrão, o Google controla a porcentagem
de solicitações de login do usuário usando o FedCM durante esse período. Os apps da Web podem
modificar explicitamente esse comportamento com o parâmetro
use_fedcm
. - Adoção obrigatória de março de 2025 das APIs FedCM pela biblioteca de plataforma do Login
do Google. Depois disso, o parâmetro
use_fedcm
será ignorado e todas as solicitações de login do usuário vão usar o FedCM.
Próximas etapas
Há três opções:
- Faça uma avaliação de impacto e, se necessário, atualize o app da Web. Essa abordagem avalia se os recursos que exigem mudanças no app da Web estão em uso. As instruções estão na próxima seção deste guia.
- Mova para a biblioteca de Serviços de Identificação do Google (GIS). É altamente recomendável migrar para a biblioteca de login mais recente e com suporte. Para isso, siga estas instruções.
- Não fazer nada: Seu app da Web será atualizado automaticamente quando a biblioteca do Login do Google for movida para as APIs FedCM para fazer login do usuário. Esse é o menos trabalho, mas há algum risco de os usuários não conseguirem fazer login no seu app da Web.
Realizar uma avaliação de impacto
Siga estas instruções para determinar se o app da Web pode ser atualizado de forma transparente com uma atualização compatível com versões anteriores ou se são necessárias mudanças para evitar que os usuários não consigam fazer login quando a biblioteca da plataforma de login do Google adotar totalmente as APIs FedCM.
Configuração
As APIs do navegador e a versão mais recente da biblioteca da plataforma de Login do Google são necessárias para usar o FedCM durante o login do usuário.
Antes de continuar:
- Atualize para a versão mais recente do Chrome para computador. O Chrome para Android exige a versão M128 ou mais recente e não pode ser testado usando versões anteriores.
Abra
chrome://flags
e defina os seguintes recursos com estes valores:- #fedcm-authz Ativado
- #protecao-contra-rastreamento-3pcd Ativado
- #third-party-cookie-deprecation-trial Desativado
- #tpcd-metadata-grants Desativado
- #tpcd-heuristics-grants Desativada
e reinicie o Chrome.
Defina
use_fedcm
comotrue
ao inicializar a biblioteca da plataforma do Login do Google no seu app da Web. Normalmente, a inicialização tem esta aparência:gapi.client.init({use_fedcm: true})
ougapi.auth2.init({use_fedcm: true})
ougapi.auth2.authorize({use_fedcm: true})
.
Invalidate as versões em cache da biblioteca da plataforma do Login do Google. Normalmente, essa etapa é desnecessária, porque a versão mais recente da biblioteca é transferida diretamente para o navegador ao incluir
api.js
,client.js
ouplatform.js
em uma tag<script src>
. A solicitação pode usar qualquer um desses nomes de pacote para a biblioteca.Confirme as configurações do OAuth para seu ID do cliente OAuth:
- Abra a página "Credenciais" do Google API Console.
Verifique se o URI do site está incluído nas Origens JavaScript autorizadas. O URI inclui apenas o esquema e o nome de host totalmente qualificado. Por exemplo,
https://www.example.com
.Opcionalmente, as credenciais podem ser retornadas usando um redirecionamento para um endpoint que você hospeda, em vez de um callback do JavaScript. Nesse caso, verifique se os URIs de redirecionamento estão incluídos nos URIs de redirecionamento autorizados. Os URIs de redirecionamento incluem o esquema, o nome do host totalmente qualificado e o caminho e precisam obedecer às regras de validação do URI de redirecionamento. Por exemplo,
https://www.example.com/auth-receiver
.
Teste
Depois de seguir as instruções na configuração:
- Feche todas as janelas anônimas do Chrome e abra uma nova. Isso apaga todos os cookies ou conteúdos armazenados em cache.
- Carregue a página de login do usuário e tente fazer login.
Siga as instruções nestas seções deste guia para identificar e corrigir problemas conhecidos:
Procure erros ou avisos no console relacionados à biblioteca do Google Sign-in.
Repita esse processo até que nenhum erro ocorra e você possa fazer login. Para verificar se o login foi bem-sucedido, confirme se
BasicProfile.getEmail()
retorna seu endereço de e-mail e seGoogleUser.isSignedIn()
éTrue
.
Localizar a solicitação da biblioteca do Login do Google
Verifique se as mudanças na permissions-policy e na Política de Segurança de Conteúdo são necessárias inspecionando a solicitação para a biblioteca da plataforma do Login do Google. Para fazer isso, localize a solicitação usando o nome e a origem da biblioteca:
- No Chrome, abra o painel Network do DevTools e atualize a página.
- Use os valores nas colunas Domain e Name para localizar a solicitação
da biblioteca:
- O domínio é
apis.google.com
e - O nome é
api.js
,client.js
ouplatform.js
. O valor específico de "Nome" depende do pacote de biblioteca solicitado pelo documento.
- O domínio é
Por exemplo, filtre apis.google.com
na coluna Domínio e platform.js
na coluna Nome.
Verificar a policy de permissões de iframe
Seu site pode usar a biblioteca da plataforma do Login do Google em um iframe de origem cruzada. Se sim, é necessário fazer uma atualização.
Depois de seguir as instruções Localizar a solicitação da biblioteca do Login do Google, selecione a solicitação da biblioteca do Login do Google no painel Network das Ferramentas do desenvolvedor e localize o cabeçalho Sec-Fetch-Site
na seção Request Headers na guia Headers. Se o valor do cabeçalho
for:
same-site
ousame-origin
, as políticas entre origens não se aplicam e nenhuma mudança é necessária.- As mudanças de
cross-origin
podem ser necessárias se um iframe estiver sendo usado.
Para confirmar se um iframe está presente:
- Selecione o painel Elementos no Chrome DevTools.
- Use Ctrl + F para encontrar um iframe no documento.
Se um iframe for encontrado, inspecione o documento para verificar se há chamadas para as funções gapi.auth2 ou as diretivas script src
que carregam a biblioteca do Login do Google no iframe. Nesse caso:
- Adicione a política de permissões
allow="identity-credentials-get"
ao iframe pai.
Repita esse processo para cada iframe no documento. Os iframes podem ser aninhados, então adicione a diretiva "allow" a todos os iframes pai ao redor.
Conferir a Política de Segurança de Conteúdo
Caso seu site use uma Política de Segurança de Conteúdo, talvez seja necessário atualizar a CSP para permitir o uso da biblioteca do Login do Google.
Depois de seguir as instruções para Localizar a solicitação da biblioteca de Login do Google, selecione a solicitação da biblioteca do Login do Google no painel
Rede do DevTools e localize o cabeçalho Content-Security-Policy
na seção
Cabeçalhos de resposta da guia Cabeçalhos.
Se o cabeçalho não for encontrado, nenhuma alteração será necessária. Caso contrário, verifique se alguma destas diretivas está definida no cabeçalho CSP e atualize-as da seguinte forma:
Adição de
https://apis.google.com/js/
,https://accounts.google.com/gsi/
ehttps://acounts.google.com/o/fedcm/
a qualquer diretivaconnect-src
,default-src
ouframe-src
.Adicione
https://apis.google.com/js/bundle-name.js
à diretivascript-src
. Substituabundle-name.js
porapi.js
,client.js
ouplatform.js
com base no pacote de biblioteca solicitado pelo documento.
Verificar se há mudanças no prompt do usuário
Há algumas diferenças no comportamento do prompt do usuário. O FedCM adiciona uma caixa de diálogo modal mostrada pelo navegador e atualiza os requisitos de ativação do usuário.
Caixa de diálogo modal
Inspecione o layout do seu site para confirmar se o conteúdo subjacente pode ser sobreposto com segurança e temporariamente obscurecido pela caixa de diálogo modal do navegador. Caso contrário, talvez seja necessário ajustar o layout ou a posição de alguns elementos do seu site.
Ativação do usuário
O FedCM inclui requisitos de ativação do usuário atualizados. Apertar um botão ou clicar em um link são exemplos de gestos do usuário que permitem que origens de terceiros façam solicitações de rede ou armazenem dados. Com o FedCM, o navegador solicita o consentimento do usuário quando:
- um usuário faz login pela primeira vez em um app da Web usando uma nova instância de navegador;
- A função
GoogleAuth.signIn
é chamada.
Atualmente, se o usuário já tiver feito login no seu site, você poderá acessar
as informações de login dele ao inicializar a biblioteca do Google Sign-In
usando gapi.auth2.init
, sem mais interações do usuário. Isso não é mais possível, a menos que o usuário tenha passado pelo fluxo de login do FedCM pelo menos uma vez.
Ao ativar o FedCM e chamar GoogleAuth.signIn
, na próxima vez que o mesmo
usuário visitar seu site, gapi.auth2.init
poderá receber as informações de login
do usuário durante a inicialização sem interação do usuário.
Casos de uso comuns
A documentação para desenvolvedores da biblioteca do Login do Google inclui guias e exemplos de código para casos de uso comuns. Esta seção discute como a FedCM afeta o comportamento.
Como integrar o Login do Google ao seu app da Web
Nesta demonstração, um elemento
<div>
e uma classe renderizam o botão. Para usuários que já fizeram login, o eventoonload
da página retorna as credenciais do usuário. A interação do usuário é necessária para fazer login e estabelecer uma nova sessão.A inicialização da biblioteca é feita pela classe
g-signin2
, que chamagapi.load
egapi.auth2.init
.Um gesto do usuário, um evento
onclick
do elemento<div>
, chamaauth2.signIn
durante o login ouauth2.signOut
ao sair.Como criar um botão de Login do Google personalizado
Na Demonstração 1, os atributos personalizados são usados para controlar a aparência do botão de login e, para usuários já conectados, o evento
onload
da página retorna as credenciais do usuário. A interação do usuário é necessária para fazer login e estabelecer uma nova sessão.A inicialização da biblioteca é feita por um evento
onload
para a bibliotecaplatform.js
, e o botão é mostrado porgapi.signin2.render
.Um gesto do usuário, pressionando o botão de login, chama
auth2.signIn
.Na segunda demonstração, um elemento
<div>
, estilos CSS e um gráfico personalizado são usados para controlar a aparência do botão de login. A interação do usuário é necessária para fazer login e estabelecer uma nova sessão.A inicialização da biblioteca é feita no carregamento do documento usando uma função inicial que chama
gapi.load
,gapi.auth2.init
egapi.auth2.attachClickHandler
.Um gesto do usuário, um evento
onclick
de elemento<div>
, chamaauth2.signIn
usando oauth2.attachClickHandler
durante o login ouauth2.signOut
no sair.Monitorar o estado da sessão do usuário
Nesta demonstração, um botão é usado para o usuário fazer login e sair. A interação do usuário é necessária para fazer login e estabelecer uma nova sessão.
A inicialização da biblioteca é feita chamando diretamente
gapi.load
,gapi.auth2.init
egapi.auth2.attachClickHandler()
depois queplatform.js
é carregado usandoscript src
.Um gesto do usuário, um evento
onclick
do elemento<div>
, chamaauth2.signIn
usandoauth2.attachClickHandler
durante o login ouauth2.signOut
ao sair.Como solicitar outras permissões
Nesta demonstração, um botão é usado para solicitar escopos adicionais do OAuth 2.0, receber um novo token de acesso e, para usuários já conectados, o evento
onload
da página retorna as credenciais do usuário. A interação do usuário é necessária para fazer login e estabelecer uma nova sessão.A inicialização da biblioteca é feita pelo evento
onload
para a bibliotecaplatform.js
por uma chamada paragapi.signin2.render
.Um gesto do usuário, clicando em um elemento
<button>
, aciona uma solicitação para outros escopos do OAuth 2.0 usandogoogleUser.grant
ouauth2.signOut
ao sair.Como integrar o Login do Google usando listeners
Nesta demonstração, para usuários que já fizeram login, o evento
onload
da página retorna as credenciais do usuário. A interação do usuário é necessária para fazer login e estabelecer uma nova sessão.A inicialização da biblioteca é feita no carregamento do documento usando uma função de início que chama
gapi.load
,gapi.auth2.init
egapi.auth2.attachClickHandler
. Em seguida,auth2.isSignedIn.listen
eauth2.currentUser.listen
são usados para configurar a notificação de mudanças no estado da sessão. Por fim,auth2.SignIn
é chamado para retornar credenciais de usuários conectados.Um gesto do usuário, um evento
onclick
de elemento<div>
, chamaauth2.signIn
usando oauth2.attachClickHandler
durante o login ouauth2.signOut
no sair.Login do Google para apps do lado do servidor
Nesta demonstração, um gesto do usuário é usado para solicitar um código de autenticação do OAuth 2.0, e um callback JS faz uma chamada AJAX para enviar a resposta ao servidor de back-end para verificação.
A inicialização da biblioteca é feita usando um evento
onload
para a bibliotecaplatform.js
, que usa uma função de início para chamargapi.load
egapi.auth2.init
.Um gesto do usuário, clicando em um elemento
<button>
, aciona uma solicitação de um código de autorização chamandoauth2.grantOfflineAccess
.-
O FedCM exige consentimento para cada instância do navegador, mesmo que os usuários do Android já tenham feito login. Um consentimento único é necessário.
Gerenciar o período de transição
Durante o período de transição, uma porcentagem de logins de usuários pode usar o FedCM. A porcentagem exata pode variar e mudar com o tempo. Por padrão, o Google controla quantas solicitações de login usam o FedCM, mas você pode ativar ou desativar o uso do FedCM durante o período de transição. No final do período de transição, o FedCM se torna obrigatório e é usado para todas as solicitações de login.
A ativação direciona o usuário pelo fluxo de login do FedCM, enquanto a
desativação direciona o usuário pelo fluxo de login atual. Esse comportamento é
controlado usando o parâmetro use_fedcm
.
Ativar
Pode ser útil controlar se todas ou algumas tentativas de login no seu
site usam APIs FedCM. Para fazer isso, defina use_fedcm
como true
ao inicializar
a biblioteca da plataforma. A solicitação de login do usuário usa APIs FedCM neste caso.
Desativar
Durante o período de transição, uma porcentagem das tentativas de login do usuário no seu site
usará as APIs do FedCM por padrão. Se for necessário mais tempo para fazer mudanças no
app, você poderá desativar temporariamente o uso das APIs FedCM. Para fazer isso, defina
use_fedcm
como false
ao inicializar a biblioteca da plataforma. A solicitação de login do usuário não usará as APIs FedCM nesse caso.
Depois que a adoção obrigatória ocorre, todas as configurações de use_fedcm
são ignoradas pela
biblioteca da plataforma do Login do Google.
Ajuda
Pesquise ou faça perguntas no Stack Overflow usando a tag google-signin.