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

Next-Auth谷歌认证后无法自动重定向至原页面问题排查

问题诊断与修复方案

核心问题:谷歌Provider手动指定redirect_uri导致回调参数丢失

你在GoogleProvider配置里手动设置了redirect_uri: 'http://localhost:3000/api/auth/callback/google',这会覆盖NextAuth自动生成的、包含callbackUrl参数的回调地址。谷歌认证完成后,只会跳转到这个固定地址,无法携带之前的callbackUrl(也就是/home/form),导致NextAuth不知道认证成功后该重定向到哪里,最终停留在登录页。

修复步骤

1. 移除谷歌Provider中的手动redirect_uri配置

修改src\app\api\auth\[...nextauth]\route.ts里的GoogleProvider部分,删掉authorization下的redirect_uri参数:

GoogleProvider({
    clientId: process.env.GOOGLE_CLIENT_ID as string,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
    // 删掉以下手动配置的redirect_uri段落
    // authorization: {
    //     params: {
    //         redirect_uri: 'http://localhost:3000/api/auth/callback/google'
    //     }
    // }
}),

NextAuth会自动根据当前环境生成正确的回调地址,包含callbackUrl参数,确保认证完成后能正确跳转。

2. 确认signIn调用逻辑

你的登录按钮调用signIn(providerName)时,NextAuth会自动从当前URL的callbackUrl参数中读取目标地址,当前写法是正确的。如果是主动触发登录(非middleware重定向场景),可以手动传入callbackUrl参数:

const handleClick = (providerName: string) => {
    signIn(providerName, { callbackUrl: "/home/form" });
}

但你的场景是从受保护页面被重定向到登录页,URL里已自带callbackUrl,无需改动这部分。

3. 验证pages配置一致性

你的middleware和authConfig里的pages.signIn都设置为/home/auth,这部分配置正确,确保未认证用户访问受保护路由时,会被重定向到正确的登录页并携带callbackUrl。

测试验证

修改后重启开发服务器,访问/home/form,会被重定向到/home/auth?callbackUrl=%2Fhome%2Fform,点击谷歌登录,认证完成后应该会自动跳转到/home/form。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:40:08