Next.js 14 + NextAuth V5部署至Digital Ocean App平台的重定向URI问题
解决方案:NextAuth V5 部署后重定向至正确域名
1. 修正NextAuth核心配置
在你的auth.ts(或auth.js)配置文件中,启用trustHost选项,让NextAuth自动识别部署环境的主机域名,避免硬编码localhost:
import NextAuth from "next-auth"; import Google from "next-auth/providers/google"; export const { handlers, auth, signIn, signOut } = NextAuth({ providers: [ Google({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }), ], // 开启该选项后,框架会自动读取部署环境的Host头确定域名 trustHost: true, // 若应用有basePath,需同步配置此处 // basePath: "/your-custom-base-path", });
2. 检查并更新环境变量
在Digital Ocean App的环境变量面板中:
- 移除或修正
NEXTAUTH_URL(若存在),不要设置为localhost:3000;NextAuth V5推荐依赖trustHost自动识别,若手动配置需改为你的部署域名,比如https://your-production-domain.com - 确认
GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET与Google Cloud Console中的配置完全一致
3. 更新Google OAuth重定向URI
登录Google Cloud Console,找到对应OAuth 2.0客户端ID,将重定向URI替换为部署后的完整路径:
https://your-production-domain.com/api/auth/callback/google
保留本地开发用的http://localhost:3000/api/auth/callback/google即可,无需删除。
4. 清理缓存并重新部署
- 在Digital Ocean App控制台触发重新部署,确保新配置生效
- 若本地有.env文件,确认生产环境部署时没有被本地配置覆盖
5. 验证反向代理头传递
如果Digital Ocean App使用了平台自带的反向代理,确保代理正确传递Host请求头——NextAuth依赖这个头识别当前运行的域名。
内容的提问来源于stack exchange,提问作者Bouchaala Sabri
相关产品推荐
相关产品推荐

