如何将范围添加到现有访问令牌?如果我正确阅读此页面,则可以这样做:
https://developers.google.com/+/web/signin/incremental-auth
但我很难理解如何实现这一点。从理论上讲,我应该可以致电:
gapi.auth.signIn({ 'scope': 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/contacts' });
...但该页面上的文档显示"稍后,当您的用户想要执行需要其他范围的操作时,您的应用会请求这些其他范围,并向用户显示同意屏幕并要求授权只有新的范围。"
所以我有一个javascript函数,我触发它来做那个gapi调用,而且......没什么。显然,我不理解如何使这项工作。这个调用是否应该扩展我的访问令牌的功能,以便下次使用刷新令牌来获取它时,新的范围将会到位?这似乎并没有发生。任何指导意见。
和j
答案 0 :(得分:1)
使用此代码
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]})来请求它们。
var options = new gapi.auth2.SigninOptionsBuilder(
{'scope': '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}));
});
检查此link以获取更多信息
答案 1 :(得分:0)
更新: 我修复了页面级元数据,我手动触发的对gapi.auth.signin函数的调用确实调出了窗口,要求获得更多权限。
答案 2 :(得分:0)
我正在使用react,所以我在window.gapi中没有全局名称空间中的auth2,所以我必须进行以下更改才能获得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}));
});