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

NextAuth谷歌登录部署后重定向至localhost而非生产域名问题

Next.js + NextAuth 谷歌登录部署后重定向到localhost的解决方法

我基于Next.js开发项目,集成谷歌登录功能时遇到问题:已经在谷歌OAuth 2.0控制台和Amplify环境变量中配置了生产域名,但部署后点击登录,系统仍重定向到http://localhost:3000,而非预设的生产域名。

相关核心代码如下:
src/pages/api/auth/[...nextauth].ts:

import NextAuth from 'next-auth';
import GoogleProvider from 'next-auth/providers/google';

export default NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  secret: process.env.NEXTAUTH_SECRET || process.env.NEXT_PUBLIC_SECRET,
});

尝试过在amplify.yml构建阶段添加- echo "NEXTAUTH_URL=$NEXTAUTH_URL" >> .env,但无效。


关键原因

NextAuth默认自动检测应用URL,但在Amplify这类托管环境中,自动检测机制可能失效,必须显式指定生产环境的NEXTAUTH_URL,同时确保环境变量正确传递到应用。

解决步骤

1. 确认Amplify环境变量配置正确

  • 登录Amplify控制台,进入项目 → 环境变量页面
  • 确保已添加NEXTAUTH_URL变量,值为你的生产域名(必须带https://,例如https://your-amplify-app-id.amplifyapp.com)
  • 确保变量已勾选部署时可用(Amplify默认会让环境变量在构建和运行阶段生效)

2. 修改NextAuth配置,显式指定URL

在src/pages/api/auth/[...nextauth].ts中添加url配置项,强制指定生产环境地址:

import NextAuth from 'next-auth';
import GoogleProvider from 'next-auth/providers/google';

export default NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  // 显式绑定生产环境URL
  url: process.env.NEXTAUTH_URL,
  secret: process.env.NEXTAUTH_SECRET || process.env.NEXT_PUBLIC_SECRET,
  // 可选:强制统一重定向逻辑
  callbacks: {
    async redirect({ url, baseUrl }) {
      // 确保所有重定向都使用生产域名
      return baseUrl;
    },
  },
});

3. 移除amplify.yml中的冗余命令

不需要执行echo "NEXTAUTH_URL=$NEXTAUTH_URL" >> .env,Amplify会自动将环境变量注入Next.js运行环境,process.env可直接读取。

4. 验证谷歌OAuth重定向URI

登录谷歌OAuth 2.0控制台,确认授权重定向URI已添加生产环境的回调地址:

https://your-production-domain.com/api/auth/callback/google

注意域名必须和NEXTAUTH_URL完全一致,包括https前缀。

5. 重新部署应用

在Amplify控制台触发重新构建部署,确保新配置生效。


额外排查点

  • 可在登录页添加console.log(process.env.NEXTAUTH_URL),验证环境变量是否正确加载
  • 确保NEXTAUTH_SECRET已正确配置,这是NextAuth加密会话的关键,缺失可能导致异常
  • 检查浏览器网络请求,确认登录跳转的请求地址是否已替换为生产域名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 04:13:10