'why does next auth say that client_id is required, even though in discord providers, there clearly is a client_id

When I try to use next auth to create a discord oauth client and I click sign in, I get this error:

https://next-auth.js.org/errors#get_authorization_url_error client_id is required {
  message: 'client_id is required',
  stack: 'TypeError: client_id is required\n' +
    '    at new BaseClient (/Users/muyuan/Documents/minibot/node_modules/openid-client/lib/client.js:178:13)\n' +
    '    at new Client (/Users/muyuan/Documents/minibot/node_modules/openid-client/lib/client.js:1823:7)\n' +
    '    at openidClient (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/lib/oauth/client.js:28:18)\n' +
    '    at getAuthorizationUrl (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/lib/oauth/authorization-url.js:67:51)\n' +
    '    at Object.signin (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/routes/signin.js:37:60)\n' +
    '    at NextAuthHandler (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/index.js:191:39)\n' +
    '    at processTicksAndRejections (internal/process/task_queues.js:95:5)\n' +
    '    at async NextAuthNextHandler (/Users/muyuan/Documents/minibot/node_modules/next-auth/next/index.js:21:19)\n' +
    '    at async /Users/muyuan/Documents/minibot/node_modules/next-auth/next/index.js:57:32\n' +
    '    at async Object.apiResolver (/Users/muyuan/Documents/minibot/node_modules/next/dist/server/api-utils.js:101:9)',
  name: 'TypeError'
}
[next-auth][error][SIGNIN_OAUTH_ERROR] 
https://next-auth.js.org/errors#signin_oauth_error client_id is required {
  error: {
    message: 'client_id is required',
    stack: 'TypeError: client_id is required\n' +
      '    at new BaseClient (/Users/muyuan/Documents/minibot/node_modules/openid-client/lib/client.js:178:13)\n' +
      '    at new Client (/Users/muyuan/Documents/minibot/node_modules/openid-client/lib/client.js:1823:7)\n' +
      '    at openidClient (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/lib/oauth/client.js:28:18)\n' +
      '    at getAuthorizationUrl (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/lib/oauth/authorization-url.js:67:51)\n' +
      '    at Object.signin (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/routes/signin.js:37:60)\n' +
      '    at NextAuthHandler (/Users/muyuan/Documents/minibot/node_modules/next-auth/core/index.js:191:39)\n' +
      '    at processTicksAndRejections (internal/process/task_queues.js:95:5)\n' +
      '    at async NextAuthNextHandler (/Users/muyuan/Documents/minibot/node_modules/next-auth/next/index.js:21:19)\n' +
      '    at async /Users/muyuan/Documents/minibot/node_modules/next-auth/next/index.js:57:32\n' +
      '    at async Object.apiResolver (/Users/muyuan/Documents/minibot/node_modules/next/dist/server/api-utils.js:101:9)',
    name: 'TypeError'
  },
  provider: {
    id: 'discord',
    name: 'Discord',
    type: 'oauth',
    authorization: {
      url: 'https://discord.com/api/oauth2/authorize',
      params: [Object]
    },
    token: { url: 'https://discord.com/api/oauth2/token', params: {} },
    userinfo: { url: 'https://discord.com/api/users/@me', params: {} },
    profile: [Function: profile],
    idToken: false,
    checks: [ 'state' ],
    client_id: my client id(not actually 'my client id'),
    client_secret: my client secret(not actually 'my client secret'),
    signinUrl: 'http://localhost:3000/api/auth/signin/discord',
    callbackUrl: 'http://localhost:3000/api/auth/callback/discord'
  },
  message: 'client_id is required'
}

This is how I defined my discord provider:

import NextAuth from "next-auth"
import DiscordProvider from "next-auth/providers/discord"

export default NextAuth({
  // Configure one or more authentication providers
  providers: [
    DiscordProvider({
        client_id: process.env.DISCORD_CLIENT_ID,
        client_secret: process.env.DISCORD_CLIENT_SECRET
    })
  ],
  secret: "hello1234567890",
  debug: true
})

There is clearly a client_id. Why is it still giving me that error? Also on my website when I click "Log in with discord", it says "try signing in with a different account".



Solution 1:[1]

I'm no expert but have you tried changing the config object properties names?
I believe they should be camelCase rather than snake_case

?   "clientId"
?   "client_id"

DiscordProvider({
    clientId: process.env.DISCORD_CLIENT_ID,
    clientSecret: process.env.DISCORD_CLIENT_SECRET
})

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Felipe Chernicharo