ASP.NET MVC集成Google登录报400 redirect_uri_mismatch错误如何解决
Google登录redirect_uri_mismatch报错修复方案
报错核心原因是:授权请求中携带的redirect_uri参数和Google Cloud Console中OAuth 2.0客户端登记的重定向地址不完全匹配,Google对该参数做严格全路径校验,端口、协议、路径、末尾斜杠任意一处不一致都会拦截请求。
第一步:修正ASP.NET MVC项目侧的配置
你当前请求里的redirect_uri=https://localhost:7082/是站点根路径,不符合ASP.NET Core Google认证中间件的默认回调规则,先做以下检查:
- 打开项目下
Properties/launchSettings.json文件,确认本地HTTPS启动端口确实为7082,避免配置端口和实际运行端口不一致。 - 检查Program.cs(或使用Startup的项目对应Startup.cs)中的Google认证配置,非特殊需求不要手动修改回调路径,默认配置参考如下:
builder.Services.AddAuthentication() .AddGoogle(options => { options.ClientId = builder.Configuration["Authentication:Google:ClientId"]; options.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"]; // 无自定义路由需求不要手动设置options.CallbackPath,默认回调路径为/signin-google });
- 如果你同时接入了Google前端JS登录组件,不要在前端初始化时随意将redirect_uri设为站点根路径,必须和后端回调路径保持一致。
如果你的业务确实需要自定义回调路径,后续登记URI时替换为自定义路径即可,不需要强制使用默认路径。
第二步:在Google Cloud Console登记正确的重定向URI
- 进入Google Cloud控制台,打开对应项目的「API和服务-凭据」页面,点开当前使用的Web类型OAuth 2.0客户端ID。
- 找到「已授权的重定向URI」配置栏,点击添加URI,填入和请求完全匹配的回调地址,使用默认配置的情况下需要填入:
https://localhost:7082/signin-google
填写时注意几个高频错误点:
- 必须带完整回调路径,不能只填站点根地址
https://localhost:7082/- 路径末尾不要随意加斜杠,比如
https://localhost:7082/signin-google/(末尾多斜杠)会校验失败- 协议必须为https,不要填http开头的地址
- 端口号必须和本地项目实际启动的端口完全一致,后续如果修改启动端口要同步更新这里的配置
- 保存配置后等待1-2分钟,Google侧配置同步存在短延迟,不要保存后立刻测试。
第三步:缓存清理与验证
- 清除浏览器中Google账号相关的Cookie、站点缓存,或者直接打开无痕模式测试,避免旧缓存携带错误参数。
- 重启ASP.NET MVC项目,确认项目监听的HTTPS端口为7082后,重新触发Google登录流程即可。
内容的提问来源于stack exchange,提问作者xiaotong xie
相关产品推荐
相关产品推荐

