Javascript 使用passport google oauth向req.user添加附加数据
我有一个使用google oauth passport策略对用户进行身份验证的路由,(Javascript 使用passport google oauth向req.user添加附加数据,javascript,node.js,express,passport.js,google-oauth,Javascript,Node.js,Express,Passport.js,Google Oauth,我有一个使用google oauth passport策略对用户进行身份验证的路由,(/auth/google)我还想在该路由的url中传递额外的数据作为查询(/auth/google?someParam=SOME_PARAM),我想在年从google取回该数据时将其添加到req.user)(/auth/google/callback)。问题是我可以通过/auth/google访问此查询,但谷歌会将我重定向到/auth/google/callback,它不再有权访问此数据 注-由于设计限制,我无
/auth/google
)我还想在该路由的url中传递额外的数据作为查询(/auth/google?someParam=SOME_PARAM
),我想在年从google取回该数据时将其添加到req.user
)(/auth/google/callback
)。问题是我可以通过/auth/google
访问此查询,但谷歌会将我重定向到/auth/google/callback
,它不再有权访问此数据
注-由于设计限制,我无法使用外部源作为数据库
谷歌护照
代码:
// auth.js
router.get(
"/",
(req, res, next) => {
let siteName = req.query.siteName;
let pageName = req.query.pageName;
console.log("siteName", siteName);
return next();
},
passport.authenticate("google", {
scope: ["https://www.googleapis.com/auth/plus.login"]
})
);
module.exports = router;
// authCb.js
router.get(
"/",
passport.authenticate("google", {
scope: ["https://www.googleapis.com/auth/plus.login"],
failureRedirect: "/"
}),
(req, res) => {
console.log(req.user);
res.send(req.user);
}
);
module.exports = router;
// app.js
app.use("/auth/google", auth);
app.use("/auth/google/callback", authCb);
在向google发送身份验证请求之前,您必须在会话中存储参数。 然后,在重定向之后,从会话中获取参数
// auth.js
router.get(
"/",
(req, res, next) => {
req.session.lastQuery = req.query;
return next();
},
passport.authenticate("google", {
scope: ["https://www.googleapis.com/auth/plus.login"]
})
);
module.exports = router;
// authCb.js
router.get(
"/",
passport.authenticate("google", {
scope: ["https://www.googleapis.com/auth/plus.login"],
failureRedirect: "/"
}),
(req, res) => {
const { lastQuery } = req.session;
console.log(lastQuery);
}
);
module.exports = router;
你应该参考谷歌的文档。一旦用户回到你的站点,你可以使用“state”参数传递你想要返回的任何数据。这是这个参数的主要用途。
您可以查看详细信息。谢谢!我会尝试一下,并让您知道它是如何运行的(:API是这样工作的:
/auth/google?state=state\u value
?因为文档对此不清楚。而且他们还没有指定我以后如何访问此数据?如果有明显的答案,我就是看不到它的状态={您发送的任何值}都会附加到重定向uri。因此,当用户被发送回您的站点时,您可以从uri参数访问它。