You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:10:47