使用MAUI与MS Dev Tunnel时,Google Auth回调localhost无法访问的问题求助
解决方案
可以指定Google Auth使用Dev Tunnel地址作为基础URL,以下是两种可靠的实现方式:
1. 配置转发头让服务端识别真实外部地址
MS Dev Tunnel转发请求时会携带X-Forwarded-Proto和X-Forwarded-Host头,告知服务端真实的外部访问地址。在ASP.NET Core的Program.cs中添加转发头配置,且需放在认证、授权中间件之前:
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });
配置完成后,ASP.NET Core生成Google认证回调地址时,会自动使用Dev Tunnel的域名和HTTPS协议,而非本地的localhost:7117。
2. 手动指定Google Auth的完整回调地址
如果转发头配置未生效,可直接在Google认证选项中强制设置完整的回调URL:
services.AddAuthentication() .AddGoogle(o => { var googleAuthNSection = configuration.GetSection("Authentication:Google"); o.ClientId = googleAuthNSection["ClientId"]!; o.ClientSecret = googleAuthNSection["ClientSecret"]!; o.SaveTokens = true; o.SignInScheme = IdentityConstants.ExternalScheme; // 替换为你的Dev Tunnel完整回调地址 o.RedirectUri = "https://******-7117.use.devtunnels.ms/signin-google"; });
关键注意事项
- 必须在Google Cloud控制台的OAuth 2.0客户端ID设置中,将上述Dev Tunnel回调地址添加到授权的重定向URI列表,否则Google会拒绝回调请求。
- 两种方式可结合使用,确保回调地址正确生成。
内容的提问来源于stack exchange,提问作者Ryan Langton
相关产品推荐
相关产品推荐

