'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 |
