Migrar do login do Google+

Etapas para minimizar o impacto das mudanças de escopo nos usuários

  1. Se o aplicativo exigir o endereço de e-mail de um usuário autenticado e você já tiver usado profile.emails.read para essa finalidade, use email.
  2. Receber aprovação para profile.emails.read com uma solicitação de verificação aprovada. Consulte Como enviar para verificação?
  3. Revogue o token do usuário anterior para o escopo que será removido ou remova completamente o acesso ao aplicativo. Por exemplo, um token com acesso a profile.emails.read precisa ser revogado. Recomendamos que você aplique a revogação enquanto seus usuários estiverem no aplicativo para receber o consentimento deles imediatamente.
  4. Solicite que os usuários concordem novamente com o novo escopo, como email, sem profile.emails.read.
  5. Remova o escopo que será desativado na configuração da tela de permissão OAuth das APIs do Google.
.

As alterações que você precisa fazer para migrar seu site do Login do Google+ para o Google O login depende do fluxo de Login do Google+ que você usa. Em geral, a migração exige que você atualize o botão de login, os escopos solicitados e as instruções sobre como recuperar informações de perfil do Google.

Ao atualizar o botão de login, não se refira ao G+ nem use a cor vermelha. Conformidade com nossa diretrizes da promoção de marca.

A maioria dos aplicativos de Login do Google+ solicitava uma combinação dos escopos: plus.login, plus.me e plus.profile.emails.read. Você precisa remapear os escopos da seguinte forma:

Escopo antigo Novo escopo
plus.login profile
plus.me openid
plus.profile.emails.read email

Muitos implementadores do Login do Google+ usaram a fluxo de código (link em inglês). Isso significa que que os apps Android, iOS ou JavaScript recebam um código OAuth do Google, e o cliente envia o código de volta para o servidor, junto com a solicitação entre sites proteção contra pirataria. O servidor, então, valida o código e obtém atualização e tokens de acesso para extrair informações de perfil de usuário da API people.get.

Agora, o Google recomenda que você solicite um token de ID e o envie pelo seu cliente para seu servidor. Os tokens de ID têm proteções contra falsificação entre sites integrada e pode ser verificada estaticamente em seu servidor, o que evita uma chamada de API extra para obter informações de perfil de usuário dos servidores do Google. Siga o instruções para validar tokens de ID no seu servidor.

Se você ainda preferir usar o fluxo de código para obter informações de perfil, faça isso. Depois que o servidor tiver um token de acesso, será preciso receber informações do perfil do usuário dos endpoints userinfo especificados em nosso sistema Documento de descoberta: A API a resposta é formatada de modo diferente da resposta do perfil do Google+, portanto você precisar atualizar a análise para o novo formato.

Migrar um botão de login HTML

Se você incluiu um botão de Login do Google+ em sua página por tarefa da turma g-signin a um elemento, faça as seguintes alterações:

  • Quando você especifica seu ID do cliente, seja em uma tag <meta>, um data- atributo ou um objeto de parâmetros, mude a string clientid para client_id, como no exemplo abaixo:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Atribua a classe g-signin2 ao elemento do botão de login em vez de g-signin. Além disso, especifique callbacks de sucesso e falha separados, em vez de um único callback, como no exemplo a seguir:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • Em vez de um único gerenciador de callback, defina gerenciadores de sucesso e falha. como no exemplo a seguir:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • Essas mudanças atualizam os escopos padrão para profile email openid. Você pode acessar as informações básicas do perfil do usuário, como nome, e-mail e foto de imagem da Web, da seguinte maneira:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Migrar um botão de login renderizado dinamicamente

Se você incluiu um botão de Login do Google+ em sua página chamando gapi.signin.render(), faça as seguintes alterações:

  • Quando você especifica seu ID do cliente, seja em uma tag <meta>, um data- atributo ou um objeto de parâmetros, mude a string clientid para client_id, como no exemplo abaixo:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Renderize o botão de login com gapi.signin2.render() em vez de gapi.signin.render(), como no exemplo abaixo:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Em vez de um único gerenciador de callback, defina gerenciadores de sucesso e falha. como no exemplo a seguir:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Essas mudanças atualizam os escopos padrão para profile email openid. Você pode Consiga as informações básicas de perfil do usuário com o método getBasicProfile().

Migrar um fluxo de login iniciado por JavaScript

Se você iniciou o fluxo de login com uma chamada para gapi.auth.signIn() quando os usuários clicar no botão de login, faça as seguintes alterações:

  • Quando você especifica seu ID do cliente, seja em uma tag <meta>, um data- atributo ou um objeto de parâmetros, mude a string clientid para client_id, como no exemplo abaixo:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Use gapi.auth2.attachClickHandler() para iniciar o fluxo de login quando um botão for pressionada, como no exemplo a seguir:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • Em vez de um único gerenciador de callback, defina gerenciadores de sucesso e falha. como no exemplo a seguir:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Essas mudanças atualizam os escopos padrão para profile email openid. Você pode Consiga as informações básicas do perfil do usuário chamando o método getBasicProfile() .

Migrar um fluxo híbrido do lado do servidor

Se você usou a API JavaScript para receber um código de autorização único para transmitir ao servidor, faça as seguintes alterações:

  • Altere o escopo de https://www.googleapis.com/auth/plus.login para profile.

  • Usar o método gapi.auth2.grantOfflineAccess() com o callback já existente como no exemplo a seguir:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

Se você também precisar de acesso ao e-mail do usuário, adicione email ao parâmetro de escopo.