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
,我都需要更新用户对象,因为他可能创建了一个新的行会,或者得到提升等等