使用Next Auth DiscordProvider实现OAuth2遇Snowflake错误的解决问询
Discord OAuth2认证错误:"client_id is not snowflake" 原因与修复方案
错误含义
这个错误是Discord API判定你传入的client_id不符合它要求的Snowflake格式。Snowflake是Discord统一使用的ID标准,本质是17-19位的纯数字字符串,不允许包含字母、符号、空格或其他非数字字符(比如你错误信息里的<符号)。
修复步骤
- 核对Client ID的准确性:登录Discord开发者后台,找到你的OAuth应用,复制官方显示的纯数字Client ID,确保没有复制到占位符(比如
<my-client-id>里的<>)、空格或其他多余字符。 - 检查环境变量配置:如果用环境变量存储
client_id,确保变量值是纯数字,无额外修饰。比如.env文件中应该写:
不要给值加引号,也不要留空格。DISCORD_CLIENT_ID=123456789012345678 DISCORD_CLIENT_SECRET=your_secret_here - 验证NextAuth的Provider配置:确保DiscordProvider的
clientId直接读取环境变量的原始值,没有额外拼接或转换。示例代码:import DiscordProvider from "next-auth/providers/discord"; export const authOptions = { providers: [ DiscordProvider({ clientId: process.env.DISCORD_CLIENT_ID, clientSecret: process.env.DISCORD_CLIENT_SECRET, }), ], }; - 重启服务并清除缓存:修改配置后,完全重启你的Next.js开发服务器,避免旧的缓存配置干扰认证流程。
内容的提问来源于stack exchange,提问作者LukeZz
相关产品推荐
相关产品推荐

