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

Google api 使用Google API OAuth 2.0在passport.js中实现增量授权,google-api,gmail,passport.js,google-oauth,Google Api,Gmail,Passport.js,Google Oauth,我目前正在使用passport.js和passport-google-oauth20的策略,我希望实现增量授权。我使用纱线作为我的包管理器,我的服务器也使用Nodejs和Express包 当用户首次登录时,我只需要他们的基本gmail信息,如他们的电子邮件地址,因此我指定“电子邮件”范围: 当他们在不同的页面上时,他们可以请求站点从他们的帐户发送电子邮件,因此我现在需要将“”范围添加到会话中。我在上找不到关于它的任何文档,谷歌也有一个关于它的文档,但我认为这不是设置,因为我使用的是passpor

我目前正在使用passport.js和passport-google-oauth20的策略,我希望实现增量授权。我使用纱线作为我的包管理器,我的服务器也使用Nodejs和Express包

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

当他们在不同的页面上时,他们可以请求站点从他们的帐户发送电子邮件,因此我现在需要将“”范围添加到会话中。我在上找不到关于它的任何文档,谷歌也有一个关于它的文档,但我认为这不是设置,因为我使用的是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'
}));
但是我得到了错误

未能加载:

对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源(我的域)

请求时

如果我在初始作用域中包括“”,并且没有第二个身份验证调用,那么它确实可以工作;从用户帐户发送电子邮件。但是,这当然不是增量授权


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

对这个问题的小更正:我实际用于成功发送电子邮件的范围是,而不是passport是一个身份验证库。期望它进行授权是不合理的,尤其是增量授权。我建议对于Inc-auth,您应该忘记任何库,自己发送适当的http重定向。
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'
}));