@mgalacyber/discord-oauth2
v1.9.6
Published
Discord OAuth2 simplifies user authentication and profile management for Discord-integrated applications.
Downloads
23
Maintainers
Readme
DISCORD OAUTH2
Discord OAuth2 is a comprehensive utility designed for Discord integration, offering robust functionalities for user authentication and profile management.
Features
- 🚀 Streamlined OAuth2 workflow for seamless user authentication and authorization.
- 📦 Retrieve comprehensive user profiles, including details like username, avatar, and other.
- 🔄 Access user connections and guild memberships for enhanced community interaction.
Installation
npm:
$ npm install @mgalacyber/discord-oauth2
yarn:
$ yarn add @mgalacyber/discord-oauth2
Simple to Use
CommonJs (CJS) syntax
const { DiscordOAuth2 } = require("@mgalacyber/discord-oauth2");
ECMAScript Modules (ESM) syntax
import { DiscordOAuth2 } from "@mgalacyber/discord-oauth2";
Get Started
CREATE CLIENT
- Create a new application on the Discord Developer Portal
- Follow guide from official Discord Documentation
Create OAuth2
const { DiscordOAuth2 } = require("@mgalacyber/discord-oauth2");
const oauth2 = new DiscordOAuth2({
clientId: "123456789012345678", // Required
clientSecret: "E-1234567890ABCDEFGHIJ1234567890", // Required
clientToken: "1234567890ABCDEFGHIJ1234.123ABC.1234567890ABCDEFGHIJ1234-123ABC_123ABC", // Optional | LinkedRolesSchema & AddUserSchema only
redirectUri: "https://example.com/callback" // Required
});
Generate OAuth2 URL
const { StateTypes, Scopes, IntegrationTypes, PromptTypes, ResponseCodeTypes } = require("@mgalacyber/discord-oauth2");
oauth2.GenerateOAuth2Url({
state: StateTypes.UserAuth, // Required
scope: [ // Required
Scopes.Identify,
Scopes.Email,
Scopes.Guilds,
Scopes.Connections,
Scopes.GuildsMembersRead,
],
prompt: PromptTypes.Consent, // Optional
responseCode: ResponseCodeTypes.Code, // Optional
integrationType: IntegrationTypes.UserInstall // Optional
}).then((result) => {
console.log(result);
// Response {
// state: string,
// url: string,
// }
});
Get Access Token
oauth2.GetAccessToken(callbackCode).then((result) => {
console.log(result);
// Response {
// accessToken: string,
// tokenType: string,
// expiresIn: number,
// refreshToken: string,
// scope: string,
// }
});
Get Refresh Token
oauth2.GetRefreshToken(refreshToken).then((result) => {
console.log(result);
// Response {
// accessToken: string,
// tokenType: string,
// expiresIn: number,
// refreshToken: string,
// scope: string,
// }
});
USER OAUTH2
- Create a new application on the Discord Developer Portal
- Follow guide from official Discord Documentation
Get User Profile
[!TIP] Require scope for this function:
- Use the
identify
scope to retrieve the user profile without includingverified
status.- Use the
verified
status.
oauth2.UserDataSchema.GetUserProfile(accessToken).then((result) => {
console.log(result);
// Response {
// id: string,
// username: string,
// avatar: string,
// discriminator: string,
// publicFlags: number,
// flags: number,
// banner: string,
// accentColor: number,
// globalName: string,
// avatarDecorationData: {
// asset: string,
// skuId: string,
// expiresAt: string,
// },
// bannerColor: string,
// clan: string,
// mfaEnabled: boolean,
// locale: string,
// premiumType: number,
// email: string,
// verified: boolean,
// }
});
Get User Guilds
[!TIP] Require scope for this function:
- Use the
guilds
scope to retrieve a list of guilds that the user has joined.
oauth2.UserDataSchema.GetUserGuilds(accessToken).then((result) => {
console.log(result);
// Response [
// {
// id: string,
// name: string,
// icon: string,
// owner: boolean,
// permissions: number,
// permissionsNew: string,
// features: array,
// }
// ]
});
Get User Connections
[!TIP] Require scope for this function:
- Use the
connections
scope to retrieve a list of connections associated with the user account.
oauth2.UserDataSchema.GetUserConnections(accessToken).then((result) => {
console.log(result);
// Response [
// {
// id: string,
// name: string,
// type: string,
// friendSync: boolean,
// metadataVisibility: number,
// showActivity: boolean,
// twoWayLink: boolean,
// verified: boolean,
// visibility: number,
// }
// ]
});
Get User Guild Member
[!TIP] Require scope for this function:
- Use the
guilds.members.read
scope to retrieve a user's member information in a guild.
oauth2.UserDataSchema.GetUserGuildMember({
accessToken: "1234567890ABCDEFGHIJ1234567890", // Required
guildId: "123456789012345678", // Required
}).then((result) => {
console.log(result);
// Response {
// avatar: string,
// communicationDisabledUntil: string,
// flags: number,
// joinedAt: string,
// nick: string,
// pending: boolean,
// premiumSince: string,
// roles: array,
// unusualDMActivityUntil: string,
// user: {
// id: string,
// username: string,
// avatar: string,
// discriminator: string,
// publicFlags: number,
// flags: number,
// banner: string,
// accentColor: number,
// globalName: string,
// avatarDecorationData: {
// asset: string,
// skuId: string,
// },
// bannerColor: string,
// clan: string,
// },
// mute: boolean,
// deaf: boolean,
// bio: string,
// banner: string,
// }
});
Add User to Guild
[!TIP] Scope requirements for this function:
- Use the
guilds.join
scope to add a member to a Guild (also the bot needs theCREATE_INSTANT_INVITE
permission).
- Grant the bot the
MANAGE_NICKNAMES
permission to customize user nicknames in the guild.- Grant the bot the
MANAGE_ROLES
permission to add roles to user profiles in the guild.- Grant the bot the
MUTE_MEMBERS
permission to mute users in the guild.- Grant the bot the
DEAFEN_MEMBERS
permission to deafen users in the guild.
oauth2.AddUserSchema.AddGuildMember({
accessToken: "1234567890ABCDEFGHIJ1234567890", // Required
params: { // Required
guildId: "123456789012345678",
userId: "123456789012345678",
},
body: { // Optional
nick: "Example Name",
roles: ["123456789012345678"],
mute: false,
deaf: false,
},
});
Add User to Group
[!TIP] Scope requirements for this function:
- Use the
gdm.join
scope to add a member to a DM Group.
oauth2.AddUserSchema.AddGroupMember({
accessToken: "1234567890ABCDEFGHIJ1234567890", // Required
params: { // Required
groupId: "123456789012345678",
userId: "123456789012345678",
},
body: { // Optional
nick: "Example Name"
},
});
LINKED ROLES
- Create a new application on the Discord Developer Portal
- Follow guide from official Discord Documentation
Get User MetaData
const refreshToken = "1234567890ABCDEFGHIJ1234567890"; // Required
oauth2.LinkedRolesSchema.GetUserMetaData(refreshToken).then((result) => {
console.log(result);
});
Push User MetaData
oauth2.LinkedRolesSchema.PushUserMetaData({
refreshToken: "1234567890ABCDEFGHIJ1234567890", // Required
body: { // Required
platformName: "testing1",
metaData: { // Required
// You can input metadata key from registerMetaData
}
}
}).then((result) => {
console.log(result);
});
Register User MetaData
oauth2.LinkedRolesSchema.RegisterMetaData([
{
key: "testing1", // Required
name: "Testing 1", // Required
nameLocalizations: "Test 1", // Optional
description: "Its just a testing 1", // Required
descriptionLocalizations: "Test 1", // Optional
type: MetaDataTypes.BooleanEqual // Required
},
{
key: "testing2", // Required
name: "Testing 2", // Required
nameLocalizations: "Test 2", // Optional
description: "Its just a testing 2", // Required
descriptionLocalizations: "Test 2", // Optional
type: MetaDataTypes.IntegerEqual // Required
}
]).then((result) => {
console.log(result);
});
How It Works
Discord OAuth2 simplifies user authentication and profile management for Discord-integrated applications. It offers a straightforward OAuth2 workflow, enabling developers to seamlessly integrate Discord features into their projects.
Bugs, glitches and issues
If you encounter any problems feel free to open an issue in our