在请求用户权限以访问用户数据或其他资源时,您可以在初始请求中预先请求所有镜重,也可以使用增量授权,仅在需要时请求镜重。使用增量授权时,您的应用最初只会请求启动应用所需的范围,然后在需要新权限时请求其他范围,并在请求时向用户说明请求原因。
例如,假设您的应用允许用户将音乐播放列表保存到 Google 云端硬盘;您的应用可以在用户登录时请求基本用户信息,之后,当用户准备保存其首个播放列表时,只请求 Google 云端硬盘权限。
如果您怀疑用户不登录是因为您的意见征求界面信息量过多,或者用户不明白为什么要他们提供某些权限,请使用此方法。以下说明适用于网站,源自添加客户端登录按钮的说明:构建 Google 2.0 登录按钮。如需详细了解 Web 的增量授权,请参阅 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 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}));
});