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

访问Google Drive时出现Error 400: redirect_uri_mismatch错误如何解决?

问题根因

你出现这个错误的核心原因是授权类使用场景不匹配:
你调用的GoogleWebAuthorizationBroker.AuthorizeAsync是谷歌官方为桌面/控制台应用设计的授权方法,它会自动启动一个本地随机端口的HTTP监听器来接收授权回调,完全忽略你在凭证JSON、谷歌云控制台配置的重定向URI,这就是你看到授权请求里的重定向地址端口每次随机变化的原因。
你当前创建的是Web类型的OAuth凭证,这类凭证要求所有回调地址必须预先在谷歌云控制台配置,不允许使用未登记的随机端口地址,所以直接触发redirect_uri_mismatch错误。

解决方案

根据你的使用场景二选一即可:

场景1:仅本地调试、不需要部署到公网

  • 打开谷歌云控制台,将当前OAuth凭证的类型从「Web应用」修改为「桌面应用」,或者直接新建一个桌面类型的OAuth凭证
  • 下载新的桌面类型凭证JSON替换原有文件
  • 删除FileDataStore配置的tokenPath路径下所有缓存的凭证文件,避免旧缓存干扰
  • 重新运行调试即可,桌面类型凭证允许GoogleWebAuthorizationBroker使用随机端口的本地回调地址,不需要预先配置

场景2:站点需要部署到公网线上使用

Web类型凭证本身是正确的,但你不能使用GoogleWebAuthorizationBroker做授权,需要改用ASP.NET Core标准的OAuth认证流程:

  • 删掉现有GoogleWebAuthorizationBroker相关的授权代码
  • 在项目的Program.cs(或Startup.cs)中配置谷歌OAuth服务,明确指定CallbackPath为你预先配置的/authorize路径,同时将ClientId、ClientSecret写入项目配置文件
  • 用户授权成功后,从认证上下文中拿到access_token和refresh_token,再初始化DriveService即可

补充说明

你换回旧凭证仍然报错的大概率原因是:旧凭证原本是桌面类型,后续被修改为了Web类型,或者本地缓存的旧凭证已损坏,清理完缓存后如果把旧凭证改回桌面类型即可恢复正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:06:06