Discord Provider
If you need a detailed guide on how to setup a provider pleaser refer to the Getting Started and Making your first integration guides.
Resources
- Shared Resources (opens in a new tab)
- Authorization Code Grant (opens in a new tab)
- OAuth2 Scopes (opens in a new tab)
Setup
Callback URL
https://your-app.com/api/auth/integration/discord
Environment variables
.env.local
AUTH_DISCORD_ID=your-client-id
AUTH_DISCORD_SECRET=your-client-secret
Add the provider to the auth.ts
file.
auth.ts
import { NextIntegrate } from 'next-integrate';
export const { auth } = NextIntegrate({
// The URL of the app, e.g. https://example.com, set in the .env file.
// If you want to modify the redirect URL, to be prefixed with something else,
// you can do it here like this:
// base_url: process.env.BASE_URL! + "/some-prefix",
// This will change the redirect URL to eg. https://example.com/some-prefix/api/auth/integration/google
base_url: process.env.BASE_URL!,
providers: [
{
provider: 'discord',
client_id: process.env.AUTH_DISCORD_ID!,
client_secret: process.env.AUTH_DISCORD_SECRET!,
integrations: [],
},
],
});
Add an integration
auth.ts
import { NextIntegrate } from 'next-integrate';
export const { auth } = NextIntegrate({
// The URL of the app, e.g. https://example.com, set in the .env file.
// If you want to modify the redirect URL, to be prefixed with something else,
// you can do it here like this:
// base_url: process.env.BASE_URL! + "/some-prefix",
// This will change the redirect URL to eg. https://example.com/some-prefix/api/auth/integration/google
base_url: process.env.BASE_URL!,
providers: [
{
provider: 'discord',
client_id: process.env.AUTH_DISCORD_ID!,
client_secret: process.env.AUTH_DISCORD_SECRET!,
integrations: [
{
name: 'some_custom_name',
options: {
scope: 'identify email',
},
callback: async (data) => {
// This is where you can save the data to a database, or do something else with it.
},
},
],
},
],
});
Usage
To use the your new integration, you can use the <Integrate />
component found in the Getting Started Guide.
import Integrate from '@/components/integrate';
export default function Home() {
return (
<main>
<Integrate provider="discord" name="some_custom_name">
Get Discord User Info
</Integrate>
</main>
);
}
Options
You can pass various parameters on the options
object to customize the integration. The parameters are specific to the Discord provider, please refer to the documentation (opens in a new tab), to verify the information if needed.
parameter | type | required | description |
---|---|---|---|
scope | string | true | A list of URL's that determines what the user will be prompted to give access to. You can parse multiple scopes by seperating with a space. You can find the full list of scopes here (opens in a new tab). |
integration_type | number | false | The integration_type parameter specifies the installation context (opens in a new tab) for the authorization. The installation context determines where the application will be installed, and is only relevant when scope contains applications.commands . When set to 0 (GUILD_INSTALL) the application will be authorized for installation to a server, and when set to 1 (USER_INSTALL) the application will be authorized for installation to a user. The application must be configured in the Developer Portal to support the provided integration_type . |