Oauth 2.0 GoogleAPI:请求其他作用域

Oauth 2.0 GoogleAPI:请求其他作用域,oauth-2.0,google-contacts-api,scopes,Oauth 2.0,Google Contacts Api,Scopes,如何将作用域添加到现有访问令牌?如果我正确阅读本页,则可以执行以下操作: 但我很难理解如何实现这一点。理论上,我应该可以打电话: gapi.auth.signIn({ 'scope': 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/contacts' }); 。。。但该页面上的文档显示“稍后,当您的用户想要执行需要附加作用域的操作时,您的应用程序会请求这些附加作用域,并且会显示一个同意屏幕,并要求用户仅授权新

如何将作用域添加到现有访问令牌?如果我正确阅读本页,则可以执行以下操作:

但我很难理解如何实现这一点。理论上,我应该可以打电话:

gapi.auth.signIn({ 'scope': 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/contacts' });
。。。但该页面上的文档显示“稍后,当您的用户想要执行需要附加作用域的操作时,您的应用程序会请求这些附加作用域,并且会显示一个同意屏幕,并要求用户仅授权新的作用域。”

所以我有一个javascript函数,我触发它来进行gapi调用,然后。。。没有什么。很明显,我不明白该怎么做。这个调用是否应该扩展我的访问令牌的功能,以便下次我使用刷新令牌获取它时,新的作用域将就位?这似乎没有发生。感谢您的指导

安迪更新: 我修复了页面级元数据,手动触发对gapi.auth.sign函数的调用确实打开了窗口以请求更多权限。

使用此代码

auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' });                /** Base scope **/
在需要其他作用域的地方,通过使用要添加的作用域构造选项生成器,然后调用user.grant({scope:[options builder]})来请求它们


检查此项以了解更多信息

我正在使用react,因此我在全局命名空间中没有auth2,只有window.gapi,因此我必须进行以下更改以获得auth2实例

var auth2 = window.gapi.auth2.getAuthInstance()
var 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}));
  });

注意:页面级元数据中需要client_id和cookie策略,尽管文档中没有指定。我是在react中这样做的,我们是在声明一个新变量googleUser,还是假设已经声明了window.googleUser?这个谷歌用户是否需要存在于其所包含的区块关闭之外?
var auth2 = window.gapi.auth2.getAuthInstance()
var 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}));
  });