Next.js开发环境Next-Auth Google登录OAuthCallbackError问题求助
Next-Auth Google OAuth 回调错误(JWT过期)解决方案
1. 修正NEXTAUTH_URL配置
- 开发环境下必须在
.env.local中明确设置:NEXTAUTH_URL=http://localhost:3000 - 避免依赖自动检测,确保变量名无拼写错误(区分大小写)。
2. 调整JWT过期时间
在[...nextauth].ts中显式配置更长的JWT有效期,覆盖默认值:
import NextAuth from "next-auth"; import GoogleProvider from "next-auth/providers/google"; import { PrismaAdapter } from "@next-auth/prisma-adapter"; import prisma from "@/lib/prismadb"; export default NextAuth({ adapter: PrismaAdapter(prisma), providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }), ], // 配置JWT和会话过期时间 session: { strategy: "jwt", maxAge: 24 * 60 * 60, // 1天 }, jwt: { maxAge: 24 * 60 * 60, // 与session保持一致 }, // 其他配置... });
3. 验证Google OAuth回调URL
- 登录Google Cloud Console,找到你的OAuth应用,在「授权重定向URI」中添加:
http://localhost:3000/api/auth/callback/google - 确保路径完全匹配,开发环境使用
http而非https,不要带尾部斜杠。
4. 同步Prisma数据库
- 执行数据库迁移,确保Next-Auth所需表正确生成:
npx prisma migrate dev - 检查
prismadb.ts的实例初始化是否正确,避免连接异常:import { PrismaClient } from '@prisma/client' const prisma = global.prisma || new PrismaClient() if (process.env.NODE_ENV !== 'production') global.prisma = prisma export default prisma
5. 清除缓存与会话
- 清除浏览器中Next-Auth相关的Cookie和本地存储。
- 重启开发服务器并清除缓存:
npm run dev -- --clear-cache
6. 同步系统时间
- 确保本地开发机器的系统时间与网络时间同步,时间偏差过大直接导致JWT过期验证失败。
内容的提问来源于stack exchange,提问作者mrkh
相关产品推荐
相关产品推荐

