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

如何设置Google OAuth 2.0重定向URI?解决端口频繁变动问题

解决Google Calendar API认证redirect_uri_mismatch(动态端口问题)

方案一:锁定OAuth重定向请求的固定端口

你的测试启动地址是https://localhost:7000,但重定向URI用了随机端口,大概率是你使用的OAuth客户端库默认自动选择了随机端口。得在代码里显式指定固定的重定向URI:

  • 配置OAuth客户端时,把RedirectUri设为固定值,比如http://127.0.0.1:7000/authorize/flowName=GeneralOAuthFlow(路径部分和错误提示里的保持一致,只把端口换成你固定的7000)
  • 同步到Google Cloud控制台的项目OAuth同意屏幕→已授权的重定向URI列表,添加这个固定URI

如果用的是.NET的Google.Apis.Auth库,示例代码大概是这样:

var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    new ClientSecrets { ClientId = "你的ClientId", ClientSecret = "你的ClientSecret" },
    new[] { CalendarService.Scope.CalendarReadonly },
    "user",
    CancellationToken.None,
    new FileDataStore("Calendar.Api.Auth.Store"),
    new LocalServerCodeReceiver("127.0.0.1", 7000, "/authorize/flowName=GeneralOAuthFlow")
).Result;

这里通过LocalServerCodeReceiver直接指定了固定端口和路径,替代默认的随机端口逻辑。

方案二:使用Google Cloud控制台支持的通配符(仅限特定场景)

Google OAuth目前支持有限的通配符规则:

  • 本地测试场景下,允许添加http://localhost/*或http://127.0.0.1/*作为重定向URI(*仅匹配路径,端口不能用通配符)
  • 要是你的重定向路径里固定有flowName=GeneralOAuthFlow,也可以尝试添加http://127.0.0.1/*/authorize/flowName=GeneralOAuthFlow这种格式(不过这个方案兼容性不如方案一,优先选方案一)

为啥LaunchSettings.json的端口不生效?

你之前加LaunchSettings里的端口没用,是因为LaunchSettings管的是你的Web应用启动端口,而OAuth重定向的端口是认证库自带的本地服务器逻辑决定的,两者不是一回事。必须在认证库的配置里指定固定端口,才能和Google控制台的URI匹配上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:00:04