Cómo solicitar permisos adicionales

Cuando se solicita permiso al usuario para acceder a sus datos u otras puedes solicitar todos los permisos por adelantado en la solicitud inicial o los alcances de las solicitudes solo según sea necesario, con la autorización incremental. Mediante el uso de la autorización incremental, tu app inicialmente solicita solo los alcances necesario para iniciar tu app y, luego, solicita permisos adicionales como permisos nuevos son obligatorios, en un contexto que identifique el motivo de la solicitud al usuario.

Por ejemplo, supongamos que tu app permite que los usuarios guarden playlists de música a Google Drive tu app puede solicitar información básica del usuario durante el acceso y, más tarde, cuando el usuario esté listo para guardar su primera playlist solicitar únicamente permisos de Google Drive.

Usa esta técnica si sospechas que los usuarios no acceden porque tu la pantalla de consentimiento sea abrumadora o no tenga claro por qué se le pregunta para ciertos permisos. Las siguientes instrucciones son para la Web y derivan de la instrucciones para agregar un botón de acceso del cliente: Cómo compilar un botón de Acceso con Google 2.0. Puedes obtener más información sobre la autorización incremental para la Web en el Documentación de OAuth 2.0

Cómo solicitar permisos adicionales

Cuando accedes, tu app solicita la "base" permisos, que incluyen el permiso de acceso profile y cualquier otro alcance inicial que tu app requiera para el funcionamiento. Más adelante, cuando el usuario quiera realizar una acción que requiera permisos, tu app solicita esos permisos adicionales y el usuario solo los autoriza los nuevos alcances desde una pantalla de consentimiento.

Paso 1: Solicita permisos base

Solicita el alcance base profile cuando inicialices el Acceso con Google. Esta el paso se incluye en Cómo compilar un botón de Acceso 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 **/

Paso 2: Solicita permisos adicionales

Siempre que se necesiten permisos adicionales, solicítalos construyendo una opción Compilador con los permisos que deseas agregar y, luego, llama a 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}));
    });