Javascript Discord.js Oauth2与passport.js
我在尝试如何使用Javascript Discord.js Oauth2与passport.js,javascript,node.js,express,oauth-2.0,passport.js,Javascript,Node.js,Express,Oauth 2.0,Passport.js,我在尝试如何使用passport discord策略提供的refresh\u令牌时遇到了一些麻烦 我正在使用passport-oauth2-refresh获取新的accessToken和refreshttoken,但此时我真的不知道如何“刷新”passport discord策略发送给我的用户对象 这就是整个战略逻辑 passport.serializeUser((user, done) => { done(null, user.id); }); passport.deseriali
passport discord
策略提供的refresh\u令牌时遇到了一些麻烦
我正在使用passport-oauth2-refresh
获取新的accessToken
和refreshttoken
,但此时我真的不知道如何“刷新”passport discord策略发送给我的用户对象
这就是整个战略逻辑
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser(async (id, done) => {
const user = await discordUser.findById(id);
if (user) done(null, user);
});
const strat = new discordStrategy(
{
clientID: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
callbackURL: process.env.CLIENT_REDIRECT,
scope: ["identify", "guilds"],
},
async (accessToken, refreshToken, profile, done) => {
try {
let user = await discordUser.findOne({ discordId: profile.id });
if (user) {
discordUser.findOneAndUpdate(
{ discordId: profile.id },
{ guilds: profile.guilds, rtoken: refreshToken, atoken: accessToken },
async (err) => {
if (err) throw err;
let newUser = await discordUser.findOne({ discordId: profile.id });
done(null, newUser);
}
);
} else {
const newUser = await discordUser.create({
discordId: profile.id,
username: profile.username,
discriminator: profile.discriminator,
avatar: profile.avatar,
guilds: profile.guilds,
rtoken: refreshToken,
atoken: accessToken,
});
const savedUser = await newUser.save();
done(null, savedUser);
}
} catch (err) {
console.log(err);
done(err, null);
}
}
);
passport.use("discord", strat);
refresh.use("discord", strat);
这是处理登录页面的快捷路线
function isAuthorized(req, res, next) {
if (req.user) {
res.redirect("/");
} else {
next();
}
}
router.get("/", passport.authenticate("discord"));
router.get(
"/redirect",
isAuthorized,
passport.authenticate("discord", {
failureRedirect: "/",
successRedirect: "/close",
})
);
我正在编写一个web仪表板,它必须显示用户具有某些特殊权限的所有协会。。。
每次用户导航到路线/guilds
,我都需要更新用户对象,因为他可能创建了一个新的行会,或者得到提升等等