node.js - OAuth2 - 错误 400:redirect_uri_mismatch 与 Passport,重定向 URL 与设置的不同
问题描述
我尝试使用护照在我的 express API 中实现 google OAuth2,但出现错误:
---------------------------------------------路由文件
:users.js
...
const GoogleStrategy = require('passport-google-oauth20').Strategy
...
passport.use(new GoogleStrategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: 'users/auth/google/callback'
}, accessToken => {
console.log(accessToken);
}
)
)
...
router.get('/auth/google', passport.authenticate('google', {scope: ['profile', 'email']}))
...
在 Google 开发人员控制台中,我将授权重定向 URI 设置为:
http://localhost:3000/users/auth/google/callback 我的客户端 ID 和密码是正确的。
在错误消息中,我可以看到重定向 URI 是:http://localhost:3000/auth/users/auth/google/callback
Url路径的开头有一个额外auth
的,奇怪的是我没有设置它。我怎样才能删除它?我什至可以删除它吗?
解决方案
首先,您为“users/auth/google/callback”创建了一个回调 url,因此您必须创建它:
router.get('users/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});
推荐阅读
- jquery - 使用 jQuery 将类添加到列中的下一个表格单元格
- ruby - 为什么 reduce 的参数按顺序排列?
- plugins - 寻找一个 lua 混淆器来保护代码
- reactjs - 键上没有 setState 的状态更改
- php - 特色产品在 opencart 的单独页面中
- python-3.x - 我正在尝试在日期中添加小时和分钟以显示新的日期和时间
- xml - 从 Drupal 8 中的 Term Entity 引用中获取字段时尝试获取非对象的属性
- post - IBM DataPower - 如何处理来自 openurl 的 HTML 响应?
- python - 如何将 python paho-mqtt 与作业队列集成?
- java - 如何从一个文本文件中填写 4 个不同的 ArrayList?