如何阻止用户授予域管理员已批准的Google Apps Marketplace应用的权限

时间:2014-07-03 10:40:00

标签: single-sign-on google-oauth google-apps-marketplace

我一直在尝试将旧式Marketplace应用转换为新的做事方式,但是当我们第一次按照通用导航链接(应用已安装到域上)时,我一直提示用户进行授权通过市场SDK上的“测试安装流程”链接。

当我要求提供' openid email'范围,出现提示,但如果我指定一个单独的范围(而不是除了' openid email')是应用程序的一部分,它不会提示用户进行身份验证(除非我要求离线访问,我想要与之前版本的功能奇偶校验,但一次只有一个问题......)。

使用google api nodejs client的示例代码:

var http = require('http');
var googleapis = require('googleapis');
var url_parse = require('url');

var OAuth = googleapis.auth.OAuth2;

var client = new OAuth(
    CLIENT_ID
    CLIENT_SECRET
    REDIRECT_URL
);

http.createServer(dispatcher).listen(80);

function dispatcher(req, res){
    res.writeHead(200, {'Content-Type': 'text/html'});
    var url = url_parse.parse(req.url, true);
    if(url.pathname === '/auth') {
        auth_time(res);
    } else if (url.pathname === '/callback') {
        console.log('looking good');
        client.getToken(url.query.code, function(err, tokens){
            console.log(tokens);
            client.setCredentials(tokens);
            res.end(render_page('yep'));
        });
    } else {
        res.end(render_page('different page'));
        console.log(req.url);
    }
}

function auth_time(res){
    res.end(render_page('<a href="'+client.generateAuthUrl({
        scope: 'openid email https://www.google.com/m8/feeds', //Prompts
        // scope: 'https://www.google.com/m8/feeds', //Doesn't prompt
        include_granted_scopes: 'true',
        access_type: 'online'
    })+'">Click for auth</a>'));
}

function render_page(contents){
    return '<html><head><title>The page</title></head><body>'+contents+'</body></html>';
}

similar question有一个答案表明https://www.googleapis.com/auth/plus.me已添加到Marketplace SDK上使用的范围列表中,但该范围在页面刷新时被删除(我猜测它已被处理与https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profile中的一个或两个相同,它们会自动设置为范围且不可移除。

0 个答案:

没有答案