抱歉拖了一段时间,你可以用这个:
done(null, user);
});
passport.deserializeUser((obj, done) => {
done(null, obj);
});
passport.use(new Strategy({
clientID: "",
clientSecret: "",
callbackURL: "http://localhost:8000/callback",
scope: [ "identify", "guilds" ],
},
(accessToken, refreshToken, profile, done) => {
process.nextTick(() => done(null, profile));
}));
app.use(session({
secret: '123',
resave: false,
saveUninitialized: false,
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(helmet());
app.locals.domain = process.env.PROJECT_DOMAIN;
app.engine('.ejs', ejs.__express);
app.set('views',__dirname+'/views');
app.use(express.static("public"));
var bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
function checkAuth(req, res, next) {
if (req.isAuthenticated()) return next();
req.session.backURL = req.url;
res.redirect("/giris");
}
const renderTemplate = (res, req, template, data = {}) => {
const baseData = {
bot: client,
path: req.path,
user: req.isAuthenticated() ? req.user : null
};
res.render(path.resolve(`${templateDir}${path.sep}${template}`), Object.assign(baseData, data));
};
app.get("/giris", (req, res, next) => {
if (req.session.backURL) {
req.session.backURL = req.session.backURL;
} else if (req.headers.referer) {
const parsed = url.parse(req.headers.referer);
if (parsed.hostname === app.locals.domain) {
req.session.backURL = parsed.path;
}
} else {
req.session.backURL = "/";
}
next();
},
passport.authenticate("discord"));
app.get("/baglanti-hatası", (req, res) => {
renderTemplate(res, req, "autherror.ejs");
});
app.get("/callback", passport.authenticate("discord", { failureRedirect: "/autherror" }), async (req, res) => {
if (req.session.backURL) {
const url = req.session.backURL;
req.session.backURL = null;
res.redirect(url);
} else {
res.redirect("/");
}
});
app.get("/cikis", function(req, res) {
req.session.destroy(() => {
req.logout();
res.redirect("/");
});
});```
You fill in the clientID, clientSecret, callbackURL sections. When the user logs in, it is sufficient to specify the id of any page.