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

Vercel部署后NextAuth Google OAuth报OAuthSignin错误,本地正常求助

问题:Vercel部署NextAuth后出现OAuthSignin错误,本地正常运行

问题详情

  • 本地localhost环境下Google/Facebook登录功能完全正常
  • 部署到Vercel后,点击登录抛出错误:[GET] /api/auth/error?error=OAuthSignin
  • 已确认环境变量中的Client ID/Secret配置无误
  • 已查阅NextAuth官方错误文档,仍未解决问题

相关代码([...nextauth].js)

import NextAuth from "next-auth/next";
import GoogleProvider from "next-auth/providers/google";
import FacebookProvider from "next-auth/providers/facebook";
import { MongoDBAdapter } from "@next-auth/mongodb-adapter";
import clientPromise from "../../../lib/mongodb";

export default NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
      authorization: {
        params: {
          redirect_uri: "https://theracakecairo.com/api/auth/callback/google",
          prompt: "consent",
          scope: "email",
        },
      },
    }),
    FacebookProvider({
      clientId: process.env.FACEBOOK_CLIENT_ID,
      clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
      authorization: {
        params: {
          redirect_uri: "https://theracakecairo.com/api/auth/callback/facebook",
          prompt: "consent",
          // access_type: "offline",
          scope: "email",
          response_type: "code",
        },
      },
    }),
  ],
  debug: true,
  secret: process.env.NEXTAUTH_SECRET,
  adapter: MongoDBAdapter(clientPromise),
  callbacks: {
    async session({ session, token, user }) {
      session.user._id = user.id;
      return session;
    },
  },
  // session: {
  //   strategy: "database",
  //   maxAge: 30 * 24 * 60 * 60
  // }
});

排查步骤(针对Vercel部署场景)

  • 检查OAuth平台的授权回调地址
    登录Google/Facebook开发者平台,将Vercel部署后的完整回调地址(如https://theracakecairo.com/api/auth/callback/google)添加到「授权重定向URI」列表,确保和代码中(或自动生成的)地址完全一致,包括协议、域名、路径,无拼写错误。本地测试用的localhost地址不能替代生产环境地址。

  • 移除硬编码的redirect_uri
    代码中手动指定的固定redirect_uri会导致环境不兼容(比如Vercel预览分支域名不同),NextAuth会自动根据当前请求域名生成正确的回调地址,建议删除authorization.params.redirect_uri配置项,让框架自动处理。

  • 验证Vercel环境变量加载状态
    进入Vercel项目的「Settings」→「Environment Variables」,确认GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET、NEXTAUTH_SECRET等变量已正确设置,且已部署到生产环境(添加变量后需重新部署才能生效)。可通过Vercel函数日志查看变量是否正常读取。

  • 添加NEXTAUTH_URL环境变量
    在Vercel中设置NEXTAUTH_URL变量,值为你的生产域名(如https://theracakecairo.com),NextAuth依赖该变量生成正确的回调地址和会话URL,避免平台自动检测失效。

  • 查看Vercel函数日志
    进入Vercel项目的「Functions」→「Logs」,筛选api/auth/[...nextauth]相关日志,开启debug: true后NextAuth会输出详细的OAuth错误细节(如回调地址不匹配、Client验证失败等),帮助精准定位问题。

  • 检查MongoDB网络访问权限
    部署到Vercel后,MongoDB的IP白名单可能限制了Vercel服务器的访问,需在MongoDB控制台将Vercel的IP段添加到白名单,或临时允许所有IP访问(仅测试用),确保NextAuth能正常连接数据库。

内容的提问来源于stack exchange,提问作者Fouad Hamdy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:05:15