no_code

请求中未找到代码。

这是什么?

当请求中缺少授权代码时,会在 OAuth 回调期间发生此错误。 在授权代码流程中,提供者会重定向回你的 /api/auth/callback 路由, 并附带一个 code 参数(通常还有 state 参数)。如果没有 code,Better Auth 无法将其兑换为令牌, 因此请求会被拒绝。

常见原因

  • OAuth 流程未正确启动(错误的响应类型或自定义 URL 缺少必需参数)。
  • 提供者返回了错误而非代码(例如,用户取消了授权),因此只有 error/error_description 参数存在。
  • 查询参数被反向代理、CDN 或框架重写剥离。
  • 提供者回调 URL 不匹配导致中间重定向,丢失了查询参数。
  • 移动端/WebView 或深度链接跳转打开了新环境,导致查询字符串丢失。
  • 使用了处理程序不读取的响应模式(例如,form_post 体而非查询参数)。

如何解决

使用标准授权代码流程

  • 通过 Better Auth 启动流程,确保提供者接收到正确参数,应用程序期望接收 code
  • 在提供者设置中,确保你的应用配置为授权代码模式(在适用情况下使用 PKCE)。

验证回调 URL 和参数传递

  • 确认提供者配置的重定向 URI 与你的 /api/auth/callback 路由完全匹配(协议、主机、路径)。
  • 确保基础设施(代理、重写、中间件)保留完整查询字符串,且不以丢弃参数的方式重定向。

本地调试

  • 在开发者工具 → 网络中,检查回调请求,确认是否存在 codeerror 参数。
  • 在开发期间记录回调处理程序接收到的原始查询/请求体,查看具体传入内容。
  • 对比开发/预发布/生产环境的凭证和重定向 URI,确保各环境配置一致。