使用Google API OAuth 2.0在password.js中实现增量授权

时间:2018-08-16 17:14:27

标签: google-api gmail passport.js google-oauth2

我目前正在将passport.js与passport-google-oauth20中的策略结合使用,我想实现增量授权。我使用yarn作为我的包管理器,我的服务器也使用Nodejs和Express包。

用户首次登录时,我所需要的只是他们的基本gmail信息(例如电子邮件地址),因此我指定了“电子邮件”范围:

router.get('/', 
    passport.authenticate('google', {
    hd: '(my domain)',
    scope: ['email'],
    accessType: 'offline',
    prompt: 'consent'
}));

当他们在不同的页面上时,他们可以请求网站从其帐户发送电子邮件,因此我现在需要在会话中添加“ https://www.mail.google.com”范围。我在passport.js website上找不到它的任何文档,而google上面有page,但是我不认为这是设置好的,因为我正在使用passport.js。我尝试使用

router.post('/sendEmail',
passport.authenticate('google', {
    hd: '(my domain)',
    scope: ['https://www.mail.google.com'],
    accessType: 'offline',
    include_granted_scopes: true,
    prompt: 'consent',
    failerRedirect: '/auth',
    successRedirect: '/google/authorizedSendEmail'
}));

但是我得到了错误

  

无法加载https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent&hd=(myDomain)&response_type=code&redirect_uri=(myCallbackURL)&scope=https%3A%2F%2Fwww.mail.google.com%2Fauth%2Fuserinfo.email&client_id=(usersID).apps.googleusercontent.com

     

对预检请求的响应未通过访问控制检查:所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“(我的域)”。

在请求时。

如果我在初始范围内包括“ https://www.mail.google.com”,并且没有第二次身份验证调用,则它确实可以工作;从用户帐户发送一封电子邮件。但是,那当然不是增量授权。

此外,我认为增量授权应具有自己的标签,但我没有代表这样做,有人可以添加吗?

0 个答案:

没有答案