google-api - 使用 Google API OAuth 2.0 在 passport.js 中实现增量授权
问题描述
我目前正在使用 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网站上找不到任何文档,谷歌上有一个页面,但我不认为这是设置,因为我使用的是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 ”并且没有第二次身份验证调用,那么它确实有效;从用户的帐户发送一封电子邮件。但是,这当然不是增量授权。
另外,我认为增量授权应该有自己的标签,但我没有代表这样做,有人可以添加吗?
解决方案
推荐阅读
- prolog - 我正在尝试为 fibbonaci 系列编写一个 prolog 程序。这段代码正在无限循环中。有人能告诉你错误是什么吗?
- python - django.db.utils.IntegrityError: NOT NULL 约束失败 - drf_writable_nested
- winapi - WinAPI with Rust: CreateWindowExW 在第二次使用相同的 WNDCLASSEXW 调用时失败
- sql - 基于条件的索引列
- javascript - 无法通过 AJAX 将数据传递给 Laravel API
- r - 使用 DPLYR 比较 2 列的值
- android - 触摸屏 Android - 应用程序中随处可见红色方块
- reactjs - How to use and convert an image file into Uint8Array in react native?
- javascript - Multiple Website Status Check with Node JS
- html - 如何使用 target="(iframe name)" 打开指向另一个链接的链接?