TokenError - NodeJS 护照 Discord

问题描述 投票:0回答:0

错误:

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 作为方法,但在这两种情况下都不起作用。

node.js discord passport.js
© www.soinside.com 2019 - 2024. All rights reserved.