Next-auth集成GitHub登录报错:access_token需为非空字符串
解决NextAuth v5 GitHub登录报错:
OperationProcessingError: "response" body "access_token" property must be a non-empty string 问题原因
报错核心是NextAuth无法从GitHub OAuth接口获取有效access_token,根源有两点:
- NextAuth v5的GitHub Provider需要显式配置客户端凭证,你当前代码仅导入Provider但未传入
clientId和clientSecret - 可能存在环境变量命名不符合v5规范的问题(v5默认环境变量前缀为
AUTH_,和v4的无前缀规则不同)
解决方案
1. 配置正确的环境变量(.env.local)
在项目根目录的.env.local文件中添加符合v5规范的GitHub OAuth凭证:
AUTH_GITHUB_ID=你的GitHub Client ID AUTH_GITHUB_SECRET=你的GitHub Client Secret NEXTAUTH_URL=http://localhost:3000 # 开发环境用此值,生产环境替换为实际域名
2. 显式配置GitHub Provider(修改auth.js)
更新auth.js代码,将GitHub Provider配置为带凭证的对象:
import NextAuth from "next-auth"; import GitHub from "next-auth/providers/github"; export const { signIn, signOut, auth, handlers } = NextAuth({ providers: [ GitHub({ clientId: process.env.AUTH_GITHUB_ID, clientSecret: process.env.AUTH_GITHUB_SECRET, }), ], });
3. 验证GitHub OAuth应用的回调URL
登录GitHub OAuth应用管理页面,确保回调URL设置正确:
- 开发环境:
http://localhost:3000/api/auth/callback/github - 生产环境:
https://你的域名/api/auth/callback/github
额外检查
- 重启Next.js开发服务器,确保环境变量生效
- 确认GitHub OAuth应用已勾选至少
read:user基础权限
内容的提问来源于stack exchange,提问作者selby
相关产品推荐
相关产品推荐

