我目前正在将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'
}));
但是我得到了错误
对预检请求的响应未通过访问控制检查:所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“(我的域)”。
在请求时。
如果我在初始范围内包括“ https://www.mail.google.com”,并且没有第二次身份验证调用,则它确实可以工作;从用户帐户发送一封电子邮件。但是,那当然不是增量授权。
此外,我认为增量授权应具有自己的标签,但我没有代表这样做,有人可以添加吗?