【发布时间】:2021-09-26 15:35:25
【问题描述】:
我正在使用 Node.js 和 express 开发一个网站。我想选择使用 Discord 登录。
我遵循了npm page 和video guide 上的指南
我可以访问 Discord OAuth 页面,但是当我单击“授权”时,它会在控制台上记录我的 discord ID,但不会重定向(应该重定向到 /auth/success)。如果我单击“取消”,它将立即按预期重定向到 /auth/forbidden。没有错误。
app.js
const express = require('express');
const http = require('http');
const session = require('express-session');
const passport = require('passport');
const discordStrategy = require('./strategies/discordstrategy');
const app = express();
app.use(session({
secret: "secret",
cookie: {
maxAge: 60000 * 60 * 24
},
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/auth', require('./routes/auth'))
const httpServer = http.createServer(app);
httpServer.listen(80, () => {
console.log("HTTP Server running on port 80");
});
auth.js
const express = require('express');
const passport = require('passport');
const router = express.Router();
router.get('/success', (req, res) => {
res.send("sucessful")
});
router.get('/forbidden', (req, res) => {
res.send("forbidden")
});
router.get('/', passport.authenticate('discord'));
router.get('/redirect', passport.authenticate('discord', {
failureRedirect: '/auth/forbidden'
}), function(req, res) {
res.redirect('/auth/success')
});
module.exports = router;
discordstrategy.js
const DiscordStrategy = require('passport-discord').Strategy;
const passport = require('passport');
var scopes = ['identify', 'guilds'];
passport.use(new DiscordStrategy({
clientID: '[redacted]',
clientSecret: '[redacted]',
callbackURL: '/auth/redirect',
scope: scopes
},
function(accessToken, refreshToken, profile, cb) {
console.log(profile.id)
}));
【问题讨论】:
标签: node.js express oauth-2.0 discord passport.js