NextAuth Google Provider生产环境redirect_uri_mismatch错误求助
解决NextAuth + Google Provider生产环境重定向到localhost的问题
以下是针对你遇到的生产环境重定向到localhost问题的具体解决方案:
1. 修正NEXTAUTH_URL环境变量
- 生产环境必须设置完整的HTTPS地址,比如
https://realdomain.com,不能只填域名 - 检查部署平台(Vercel、Netlify、自建服务器等)的环境变量配置,确保变量名
NEXTAUTH_URL拼写正确(全大写),且值没有多余空格 - 如果是自建服务器,要确保环境变量在应用启动时被正确加载(比如用dotenv或服务器配置文件注入)
2. 显式在NextAuth配置中指定URL
在你的[...nextauth].js中添加url字段,强制指定生产环境地址,避免自动检测出错:
import NextAuth from 'next-auth'; import GoogleProvider from 'next-auth/providers/google'; import FacebookProvider from "next-auth/providers/facebook"; export default NextAuth({ // 新增:显式指定URL url: process.env.NEXTAUTH_URL, providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET }), FacebookProvider({ clientId: process.env.FACEBOOK_CLIENT_ID, clientSecret: process.env.FACEBOOK_CLIENT_SECRET }) ], secret: process.env.NEXTAUTH_SECRET, callbacks: { async session({ session, token }) { return session; }, }, })
3. 检查Google Cloud Console的重定向URI配置
- 确保只保留生产环境的HTTPS重定向URI:
https://realdomain.com/api/auth/callback/google,删除所有localhost相关条目 - 保存配置后等待5-10分钟,GCP的配置变更可能存在缓存延迟
- 确认URI没有拼写错误,必须和生产环境的实际地址完全一致
4. 配置反向代理的请求头(如果使用)
如果生产环境用了Nginx等反向代理,需要添加以下请求头,让NextAuth能正确识别当前域名:
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host;
没有正确设置这些头会导致NextAuth误判当前地址为localhost。
5. 验证环境变量加载情况
在[...nextauth].js中添加日志,确认生产环境下NEXTAUTH_URL是否正确加载:
console.log('Loaded NEXTAUTH_URL:', process.env.NEXTAUTH_URL);
部署后查看服务器日志,如果输出是localhost:3000,说明环境变量没有正确注入,需要排查部署平台的配置。
内容的提问来源于stack exchange,提问作者NroGamerz
相关产品推荐
相关产品推荐

