错误:
TokenError
at Strategy.OAuth2Strategy.parseErrorResponse (/Users/anshtyagi/Documents/BACKUP/Cosmicbot/node_modules/passport-oauth2/lib/strategy.js:373:12)
at Strategy.OAuth2Strategy._createOAuthError (/Users/anshtyagi/Documents/BACKUP/Cosmicbot/node_modules/passport-oauth2/lib/strategy.js:420:16)
at /Users/anshtyagi/Documents/BACKUP/Cosmicbot/node_modules/passport-oauth2/lib/strategy.js:177:45
at /Users/anshtyagi/Documents/BACKUP/Cosmicbot/node_modules/oauth/lib/oauth2.js:191:18
at passBackControl (/Users/anshtyagi/Documents/BACKUP/Cosmicbot/node_modules/oauth/lib/oauth2.js:132:9)
at IncomingMessage.<anonymous> (/Users/anshtyagi/Documents/BACKUP/Cosmicbot/node_modules/oauth/lib/oauth2.js:157:7)
at IncomingMessage.emit (node:events:538:35)
at endReadableNT (node:internal/streams/readable:1345:12)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
这个错误来了我在登录后重定向到 /callback。
代码:
passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((obj, done) => done(null, obj));
passport.use(new Strategy({
clientID: config.Bot.ClientID,
clientSecret: config.Bot.ClientSecret,
callbackURL: config.Website.callbackURL,
scope: ['identify', 'guilds', 'email']
},
(accessToken, refreshToken, profile, done) => {
process.nextTick(() => done(null, profile));
}));
app.use(session({
store: new MemoryStore({ checkPeriod: 432000000 }),
secret: "#@%#&^$^$%@$^$&%#$%@#$%$^%&$%^#$%@#$%#E%#%@$FEErfgr3g#%GT%536c53cc6%5%tv%4y4hrgrggrgrgf4n",
resave: false,
saveUninitialized: false,
}));
app.use(passport.initialize());
app.use(passport.session());
app.engine("cosmic", ejs.renderFile);
app.set("view engine", 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
global.checkAuth = (req, res, next) => {
if (req.isAuthenticated()) return next();
req.session.backURL = req.url;
res.redirect("/login")
}
app.get("/login", (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", { prompt: 'none' }));
app.get("/callback", passport.authenticate("discord", { failureRedirect: "/error?code=999&message=We encountered an error while connecting." }), async (req, res) => {
try {
const request = require('request');
request({
url: `https://discordapp.com/api/v10/guilds/${config.Bot.guildID}/members/${req.user.id}`,
method: "PUT",
json: { access_token: req.user.accessToken },
headers: { "Authorization": `Bot ${config.Bot.ClientToken}` }
});
} catch { };
res.redirect(req.session.backURL || '/')
client.users.fetch(req.user.id).then(async a => {
client.channels.cache.get('983251683054325831').send(new Discord.MessageEmbed().setAuthor(a.username, a.avatarURL({dynamic: true})).setThumbnail(a.avatarURL({dynamic: true})).setColor("GREEN").setDescription(`[**${a.username}**#${a.discriminator}](https://bhbotlist.tech/user/${a.id}) just logged in.`).addField("Username", a.username + "#" + a.discriminator).addField("User ID", a.id))
})
});
我希望它使用 discord 登录,但它向我显示此错误。 我希望它登录并访问用户数据,例如:用户所在的公会、用户名、用户 ID、头像等。 我试过了,但没有任何效果我尝试了 PUT 和 POST 作为方法,但在这两种情况下都不起作用。