Ao solicitar a permissão do usuário para acessar dados do usuário ou outros recursos, é possível solicitar todos os escopos antecipadamente na solicitação inicial ou somente conforme necessário, usando a autorização incremental. Com a autorização incremental, o app solicita inicialmente apenas os escopos necessários para iniciá-lo e depois solicita outros escopos à medida que novas permissões são necessárias, em um contexto que identifica o motivo da solicitação ao usuário.
Por exemplo, suponha que seu app permita que os usuários salvem playlists de música no Google Drive. Ele poderá solicitar informações básicas do usuário no login e, posteriormente, quando o usuário estiver pronto para salvar a primeira playlist, peça apenas as permissões do Google Drive.
Use essa técnica se você suspeitar que os usuários não estão fazendo login porque a tela de consentimento é muito pesada ou estiver confuso sobre por que são solicitadas permissões específicas. As instruções a seguir são para a Web e são derivadas das instruções para adicionar um botão de login do lado do cliente: Como criar um botão de Login do Google 2.0. Saiba mais sobre a autorização incremental para a Web na documentação do OAuth 2.0.
Como solicitar escopos adicionais
No login, o app solicita escopos "básicos", que consistem no escopo de login
profile
e em outros escopos iniciais que o app exige para operação.
Depois, quando o usuário quiser realizar uma ação que requer outros escopos, o app solicitará esses escopos, e o usuário autorizará apenas os novos escopos em uma tela de consentimento.
Etapa 1: solicitar escopos base
Solicite o escopo básico profile
ao inicializar o Login do Google. Esta
etapa está incluída em
Como criar um botão de Login do Google 2.0.
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' }); /** Base scope **/
Etapa 2: solicitar escopos adicionais
Sempre que forem necessários escopos adicionais, solicite-os construindo um criador de opções com os escopos que você quer adicionar e chamando user.grant({scope:
[OPTIONS BUILDER]}).then(successFunction, failFunction);
:
const options = new gapi.auth2.SigninOptionsBuilder();
options.setScope('email https://www.googleapis.com/auth/drive');
googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
function(success){
console.log(JSON.stringify({message: "success", value: success}));
},
function(fail){
alert(JSON.stringify({message: "fail", value: fail}));
});