Etapas para minimizar o impacto das mudanças de escopo nos usuários
- 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, useemail
. - Receber aprovação para
profile.emails.read
com uma solicitação de verificação aprovada. Consulte Como enviar para verificação? - 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. - Solicite que os usuários concordem novamente com o novo escopo, como
email
, semprofile.emails.read
. - 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>
, umdata-
atributo ou um objeto de parâmetros, mude a stringclientid
paraclient_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 deg-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>
, umdata-
atributo ou um objeto de parâmetros, mude a stringclientid
paraclient_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 degapi.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>
, umdata-
atributo ou um objeto de parâmetros, mude a stringclientid
paraclient_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
paraprofile
.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.