Discord OAuth2 冻结

Posted

技术标签:

【中文标题】Discord OAuth2 冻结【英文标题】:Discord OAuth2 Freezing 【发布时间】: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)
));

【问题讨论】:

【参考方案1】:

Authing 后,discord 和 express 使用缓存系统来存储您的用户,这样您就不必每次都登录。尝试隐身或其他帐户并登录。

【讨论】:

以上是关于Discord OAuth2 冻结的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Electron 应用程序中使用 Discord OAuth2

Discord API - 传回生成的 OAuth2 代码的随机“无效代码”错误

Discord Oauth2 收到“无效客户端”错误

如何安全地存储 Discord(OAuth2) 用户的访问令牌?

使用 oauth2 从 Discord API 获取信息

如何撤销 Discord OAuth2.0 中的令牌?