passport-discord-token
Passport strategy for authenticating with Discord access tokens using the OAuth 2.0 API.
This module lets you authenticate using Discord in your Node.js applications using the Passport framework.
Installation
npm install passport-discord-token
or
yarn add passport-discord-token
Usage
Configure Strategy
The Discord authentication strategy authenticates users using a Discord account and OAuth 2.0 tokens. The strategy
requires a verify
callback to perform a look up of the user account given a verified OAuth 2.0 token.
JavaScript
const DiscordTokenStrategy = require('passport-discord-token');
passport.use(new DiscordTokenStrategy({
clientID: DISCORD_APP_ID,
clientSecret: DISCORD_APP_SECRET,
apiVersion: "v8"
}, function(accessToken, refreshToken, profile, done) {
User.findOrCreate({discordId: profile.id}, function (error, user) {
return done(error, user);
});
}
));
TypeScript
import { DiscordTokenStrategy } from "passport-discord-token";
passport.use(new DiscordTokenStrategy({
clientID: DISCORD_APP_ID,
clientSecret: DISCORD_APP_SECRET,
apiVersion: "v8"
}, function(accessToken, refreshToken, profile, done) {
User.findOrCreate({discordId: profile.id}, function (error, user) {
return done(error, user);
});
}
));
Authenticate Requests
Use passport.authenticate()
, specifying discord-token
as the strategy to authenticate requests.
app.post('/auth/discord/token',
passport.authenticate('discord-token'),
function (req, res) {
// do something with req.user
res.send(req.user? 200 : 401);
}
);
Client Requests
Clients can send requests to routes that use the passport-discord-token strategy using query params. Clients must
transmit the code
parameter that is received after Discord login. Clients may also optionally transmit a state
parameter.
GET /auth/discord/token?code=<TOKEN_HERE>&state=<STATE_HERE>