Estamos descontinuando a biblioteca da plataforma JavaScript de login do Google para web . A biblioteca ficará indisponível para download após a data de suspensão de uso de 31 de março de 2023. Em vez disso, use os novos Serviços de identidade do Google para Web .
Por padrão, os IDs de cliente recém-criados agora são impedidos de usar a Biblioteca de plataforma mais antiga, os IDs de cliente existentes não são afetados. Novos IDs de cliente criados antes de 29 de julho de 2022 podem definir `plugin_name` para permitir o uso da Biblioteca do Google Platform.

Migrar do GoogleAuthUtil e da API Plus.

Se você se integrou ao Login do Google usando GoogleAuthUtil.getToken ou Plus.API, migre para a API de login mais recente para aumentar a segurança e melhorar a experiência do usuário.

Migrar do antipadrão do token de acesso

Não envie tokens de acesso recebidos com GoogleAuthUtil.getToken para o servidor de back-end como uma declaração de identidade, já que não é fácil verificar se o token foi emitido para o back-end, o que deixa você vulnerável à inserção de um token de acesso por um invasor.

Por exemplo, se o código do Android for semelhante ao exemplo abaixo, você precisará migrar seu app para as práticas recomendadas atuais.

Código do Android

No exemplo, as solicitações de token de acesso usam oauth2: e uma string de escopo como o parâmetro scope para a chamada GoogleAuthUtil.getToken (oauth2:https://www.googleapis.com/auth/plus.login).

Em vez de autenticar com um token de acesso adquirido com GoogleAuthUtil.getToken, use o fluxo do token de ID ou o fluxo do código de autenticação.

Migrar para o fluxo de tokens de ID

Se você só precisar do código, endereço de e-mail, nome ou URL da foto do perfil do usuário, use o fluxo de token de código.

Para migrar para o fluxo de tokens de ID, faça as seguintes alterações:

Lado do cliente Android

  • Remover a permissão GET_ACCOUNTS (Contatos) caso você a solicite
  • Troque qualquer código usando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() ou AccountManager.newChooseAccountIntent() para Auth.GOOGLE_SIGN_IN_API com a configuração GoogleSignInOptions.Builder.requestIdToken(...).

Lado do servidor

  • Crie um novo endpoint para auth token auth.
  • Desativar o endpoint antigo após a migração dos apps cliente

Migrar para o fluxo de código de autenticação do servidor

Caso seu servidor precise acessar outras APIs do Google, como Google Drive, YouTube ou Contatos, use o fluxo de código de autenticação do servidor.

Para migrar para o fluxo do código de autenticação do servidor, faça as seguintes alterações:

Lado do cliente Android

  • Remover a permissão GET_ACCOUNTS (Contatos) caso você a solicite
  • Troque qualquer código usando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() ou AccountManager.newChooseAccountIntent() para Auth.GOOGLE_SIGN_IN_API com a configuração GoogleSignInOptions.Builder.requestServerAuthCode(...).

Lado do servidor

Ainda é possível compartilhar a lógica de acesso à API entre os endpoints antigos e novos. Exemplo:

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(...);
String accessToken = tokenResponse.getAccessToken();
String refreshToken = tokenResponse.getRefreshToken();
Long expiresInSeconds = tokenResponse.getExpiresInSeconds();

// Shared by your old and new implementation, old endpoint can pass null for refreshToken
private void driveAccess(String refreshToken, String accessToken, Long expiresInSeconds) {
   GoogleCredential credential = new GoogleCredential.Builder()
           .setTransPort(...)
           ...
           .build();
   credential.setAccessToken(accessToken);
   credential.setExpiresInSeconds(expiresInSeconds);
   credential.setRefreshToken(refreshToken);
}

Migrar do fluxo de tokens de código do GoogleAuthUtil

Se você usa GoogleAuthUtil para receber tokens de ID, migre para o novo fluxo de tokens de ID da API Sign-In.

Por exemplo, se o código do Android for semelhante ao exemplo a seguir, você precisará migrá-lo:

Código do Android

No exemplo, as solicitações de token de ID usam audience:server:client_id e o ID do cliente do servidor da Web como o parâmetro "scope" para a chamada GoogleAuthUtil.getToken (audience:server:client_id:9414861317621.apps.googleusercontent.com).

O novo fluxo de tokens de ID da API Sign-In tem os seguintes benefícios:

  • Experiência de login simplificada com apenas um toque
  • Seu servidor pode receber informações de perfis de usuários sem uma chamada de rede extra

Para migrar para o fluxo de tokens de ID, faça as seguintes alterações:

Lado do cliente Android

  • Remover a permissão GET_ACCOUNTS (Contatos) caso você a solicite
  • Troque qualquer código usando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() ou AccountManager.newChooseAccountIntent() para Auth.GOOGLE_SIGN_IN_API com a configuração GoogleSignInOptions.Builder.requestIdToken(...).

Lado do servidor

A nova API Sign-In emite tokens de ID que obedecem à especificação OpenID Connect, ao contrário de GoogleAuthUtil.getToken, que usa um formato obsoleto. Especificamente, o emissor agora é https://accounts.google.com, com um esquema https.

Durante o processo de migração, o servidor precisa verificar o token de ID dos clientes antigos e novos do Android. Para verificar os dois formatos do token, faça a alteração que corresponde à biblioteca de cliente que você usa (se você usa uma):

  • Java (bibliotecas de cliente das APIs do Google): upgrade para a versão 1.21.0 ou mais recente
  • PHP (bibliotecas de cliente das APIs do Google): se você usa a v1, faça upgrade para a versão 1.1.6 ou mais recente. Se você usa a v2, atualize para a versão 2.0.0-RC1 ou mais recente
  • Node.js: fazer upgrade para a versão 0.9.7 ou mais recente
  • Python ou suas próprias implementações: aceite os dois seguintes emissores: https://accounts.google.com e accounts.google.com.

Migrar do fluxo do código de autenticação do servidor do GoogleAuthUtil

Se você usar GoogleAuthUtil para receber um código de autenticação do servidor, será necessário migrar para o novo fluxo de código de autenticação da API Sign-In.

Por exemplo, se o código do Android for semelhante ao exemplo a seguir, você precisará migrá-lo:

Código do Android

No exemplo, as solicitações de código de autenticação do servidor usam oauth2:server:client_id + o ID do cliente para o servidor da Web como o parâmetro scope para a chamada GoogleAuthUtil.getToken (oauth2:server:client_id:9414861317621.apps.googleusercontent.com).

O novo fluxo do código de autenticação da API Sign-In tem os seguintes benefícios:

  • Experiência de login simplificada com apenas um toque
  • Se você seguir o guia de migração abaixo, seu servidor poderá receber um token de ID com as informações do perfil do usuário ao fazer a troca do código de autenticação

Para migrar para o novo fluxo de código de autenticação, faça as seguintes alterações:

Lado do cliente Android

  • Remover a permissão GET_ACCOUNTS (Contatos) caso você a solicite
  • Troque qualquer código usando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() ou AccountManager.newChooseAccountIntent() para Auth.GOOGLE_SIGN_IN_API com a configuração GoogleSignInOptions.Builder.requestServerAuthCode(...).

Lado do servidor

Mantenha o código atual, mas especifique https://oauth2.googleapis.com/token como o endpoint do servidor de token ao criar o objeto GoogleAuthorizationCodeTokenRequest. Assim, você receberá um token de ID com o e-mail, o ID do usuário e as informações de perfil do usuário sem precisar de outra chamada de rede. Esse endpoint é totalmente compatível com versões anteriores, e o código abaixo funcionará para códigos de autenticação do servidor recuperados das implementações antigas e novas do cliente Android.

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
                transport,
                jsonFactory,
                // Use below for tokenServerEncodedUrl parameter
                "https://oauth2.googleapis.com/token",
                clientSecrets.getDetails().getClientId(),
                clientSecrets.getDetails().getClientSecret(),
                authCode,
                REDIRECT_URI)
               .execute();

...

// You can also get an ID token from auth code exchange.
GoogleIdToken googleIdToken = tokenResponse.parseIdToken();
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
        .setAudience(Arrays.asList(SERVER_CLIENT_ID))
        .setIssuer("https://accounts.google.com")
        .build();
// Refer to ID token documentation to see how to get data from idToken object.
GoogleIdToken idToken = verifier.verify(idTokenString);
...