.NET Core Web应用出现redirect_uri_mismatch授权错误如何解决?
.NET Core对接Google OAuth 2.0 redirect_uri_mismatch错误解决方案
授权错误
错误 400:redirect_uri_mismatch
你无法登录该应用,因为它不符合Google的OAuth 2.0政策要求。
若你是该应用的开发者,请在Google Cloud Console中注册重定向URI。
该错误的核心原因是应用发起授权请求时携带的redirect_uri参数,和Google Cloud Console中预先配置的重定向URI完全不匹配,协议、域名、端口、路径、大小写、末尾斜杠任何一处不一致都会触发报错。
排查步骤
- 第一步:确认应用实际生成的
redirect_uri值
浏览器发起授权请求时,直接截取地址栏URL中的redirect_uri参数,做URL解码后得到原始值。.NET Core官方Google OAuth中间件默认回调路径为/signin-google,未修改配置的情况下完整的重定向地址格式为[协议]://[域名/IP]:[端口]/signin-google。 - 第二步:核对Google Cloud Console配置
进入对应项目的OAuth客户端配置页,找到「已授权的重定向URI」列表,确认第一步拿到的实际地址已经被添加到列表中,核对时注意:- 协议必须完全一致,本地开发用http就填http,生产用https就填https
- 端口号必须完全一致,本地服务跑在5001端口就不能填5000端口
- 路径必须完全匹配,默认的
/signin-google不能遗漏,不要额外添加末尾斜杠 - 大小写完全匹配,Google的重定向地址校验是大小写敏感的
- 第三步:核对.NET Core认证配置
检查Program.cs中的Google认证配置,若手动修改了CallbackPath参数,需要和Google Cloud中配置的路径保持完全一致,配置参考:builder.Services.AddAuthentication() .AddGoogle(options => { options.ClientId = "你的Google客户端ID"; options.ClientSecret = "你的Google客户端密钥"; // 若修改了默认回调路径,需要同步更新Google Cloud中的配置 // options.CallbackPath = "/custom-oauth-callback"; }); - 第四步:反向代理场景特殊处理
若应用前端部署了Nginx、CDN等反向代理服务,需要配置转发头,避免应用将https请求识别为http导致生成的重定向地址协议不匹配,配置参考:builder.Services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; }); // 需放在UseAuthentication、UseAuthorization中间件之前生效 app.UseForwardedHeaders();
常见踩坑说明
- localhost和127.0.0.1会被识别为不同的地址,应用本地运行在http://127.0.0.1:5000时,不能仅填写http://localhost:5000到授权列表
- 修改Google Cloud的重定向配置后,需要等待1-5分钟才会生效,修改后立刻测试可能仍然报错
- 生产环境部署后,需要额外将生产域名对应的重定向地址添加到Google Cloud的授权列表中
内容的提问来源于stack exchange,提问作者Celerity Ls
相关产品推荐
相关产品推荐

