请求其他权限

请求用户权限以访问用户数据或其他资源时,您可以在初始请求中预先请求所有范围,也可以仅在需要时使用增量授权请求范围。使用增量授权时,您的应用最初仅请求启动应用所需的范围,然后在需要新权限时请求其他范围,并在明确向用户提出请求的原因。

例如,假设您的应用允许用户将音乐播放列表保存到 Google 云端硬盘;您的应用可以在登录时请求基本用户信息,以后当用户准备好保存其第一个播放列表时,只需请求 Google 云端硬盘权限即可。

如果您怀疑用户因同意屏幕太多而没有登录,或者对为何要求他们提供某些权限感到困惑,请采用这种方法。以下说明适用于 Web,并且源自关于添加客户端登录按钮的说明:构建 Google 2.0 登录按钮。如需详细了解适用于网页的增量授权,请参阅 OAuth 2.0 文档

请求其他范围

在登录时,您的应用会请求“基本”范围,包括登录范围 profile 以及应用执行操作所需的任何其他初始范围。之后,当用户想要执行需要额外范围的操作时,应用会请求这些额外范围,而用户仅在同意屏幕中授权新范围。

第 1 步:请求基本范围

在初始化 Google 登录时请求基本作用域 profile构建 Google 2.0 登录按钮中包含此步骤。

auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    cookiepolicy: 'single_host_origin', /** Default value **/
    scope: 'profile' });                /** Base scope **/

第 2 步:请求其他范围

如果需要其他范围,您可以使用要添加的范围构建一个选项构建器,然后调用 user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction); 来请求这些范围:

const option = new gapi.auth2.SigninOptionsBuilder();
option.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}));
    });