Quando richiedi l'autorizzazione utente per accedere ai dati utente o ad altre risorse, puoi richiedere tutti gli ambiti in anticipo nella richiesta iniziale o richiedere gli ambiti solo in base alle necessità, utilizzando l'autorizzazione incrementale. Con l'autorizzazione incrementale, l'app richiede inizialmente solo gli ambiti necessari per avviarsi, quindi richiede ambiti aggiuntivi man mano che sono necessarie nuove autorizzazioni, in un contesto che identifica il motivo della richiesta all'utente.
Ad esempio, supponiamo che la tua app consenta agli utenti di salvare le playlist musicali su Google Drive. L'app può richiedere informazioni utente di base al momento dell'accesso e, in un secondo momento, quando l'utente è pronto a salvare la sua prima playlist, chiedere solo le autorizzazioni di Google Drive.
Utilizza questa tecnica se sospetti che gli utenti non riescano ad accedere perché la schermata del consenso è troppo complessa o non sanno perché gli vengono richieste determinate autorizzazioni. Le seguenti istruzioni sono per il web e derivano dalle istruzioni per l'aggiunta di un pulsante di accesso lato client: Creare un pulsante di accesso Google 2.0. Puoi scoprire di più sull'autorizzazione incrementale per il web nella documentazione di OAuth 2.0.
Richiesta di ambiti aggiuntivi
Al momento dell'accesso, l'app richiede gli ambiti "di base", costituiti dall'ambito di accessoprofile
e da eventuali altri ambiti iniziali necessari per il funzionamento dell'app.
In seguito, quando l'utente vuole eseguire un'azione che richiede ambiti aggiuntivi, la tua app li richiede e l'utente autorizza solo i nuovi ambiti da una schermata di consenso.
Passaggio 1: richiedi gli ambiti di base
Richiedi l'ambito di base profile
quando avvii Accedi con Google. Questo
passaggio è incluso in
Creare un pulsante Accedi con Google 2.0.
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' }); /** Base scope **/
Passaggio 2: richiedi ambiti aggiuntivi
Se sono necessari ulteriori ambiti, richiedili creando un opzioni
builder con gli ambiti da aggiungere e chiamando 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}));
});