我正在我的blog应用程序上实现谷歌身份验证,该应用程序是在react上。
我点击 这个 URL 来调用 google 身份验证,我的回调 URL 是
/api/auth/google/callback
。
但是,我遇到了两个问题。
但是,我已经在我的环境变量中配置了 https 版本。
Missing required parameter: scope
错误。我将提供我的 Passport.js 实现以及我的 API 路由,请查看此内容并询问所需的任何其他信息。
//passport.js file
passport.use(
new Google(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: "/api/auth/google/callback",
},
function (accessToken, refreshToken, profile, done) {
UserModel.findOne({ googleId: profile.id }, function (err, user) {
if (err) return done(err);
// my server side logic
}
)
);
router.get(
"/google",
passport.authenticate("google", { scope: ["profile", "email"] })
);
router.get(
"/google/callback",
passport.authenticate("google", { failureRedirect: "/auth/login/failed" }),
function (req, res) {
// Successful authentication, redirect home.
const { password, ...other } = req.user._doc;
req.session.user = other; // Store user details in session
res.redirect(process.env.CLIENT_ORIGIN);
}
);
我的客户端来源是 CLIENT_ORIGIN=https://www.frusteratedprogrammer.in/,这在我的本地主机上运行得很好。当我在产品上使用它时,只会出现问题。
我已经尝试对 auth 回调进行硬编码,如本 stackoverflow 解决方案中所述,但它又产生了一些问题。
重定向 URI 不匹配的问题(http://www.blog.frusteratedprogrammer.in/ 而不是 https://blog.frusteratedprogrammer.in/)可能是由于您的服务器配置方式或您的操作方式造成的正在处理 HTTPS。确保您的服务器已正确配置为处理 HTTPS 请求和重定向。
检查 Express 服务器前面是否存在可能导致 URL 更改的代理服务器。