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

Golang集成Google OAuth 2授权遭遇redirect_uri_mismatch错误,配置重定向URI后仍无法解决

解决Google OAuth 2的redirect_uri_mismatch错误

嘿,这问题我之前也踩过坑!一眼就瞅到核心问题了——你的代码里配置的重定向URI和Google控制台里的完全不匹配,Google OAuth对这个路径的校验是非常严格的,差一个字符都会报错。

具体问题点

看你的代码细节:

  • 在contants.go的SetupConfig函数里,RedirectURL设置的是:
    RedirectURL: "http://localhost:8080/google/callback",
    
  • 但你在Google控制台添加的重定向URI里是http://localhost:8080/google_callback(注意是下划线_分隔,不是斜杠/),而且你的路由配置也是/google_callback(看main.go里的mux.HandleFunc("/google_callback", controllers.GoogleCallback))。

这两个路径/google/callback和/google_callback是完全不同的,Google自然会判定为不匹配。

解决步骤

  1. 修正代码中的RedirectURL
    把contants.go里的RedirectURL改成和路由、控制台一致的路径:
func SetupConfig() *oauth2.Config { 
    conf := &oauth2.Config{ 
        ClientID: os.Getenv("NoteClientId"), 
        ClientSecret: os.Getenv("NoteClientSecret"), 
        // 改成和路由匹配的路径
        RedirectURL: "http://localhost:8080/google_callback", 
        Scopes: []string{ 
            "https://www.googleapis.com/auth/userinfo.email", 
            "https://www.googleapis.com/auth/userinfo.profile", 
        }, 
        Endpoint: google.Endpoint, 
    } 
    return conf 
}
  1. 确认控制台配置的URI精确匹配
    检查Google控制台里的重定向URI列表,确保http://localhost:8080/google_callback已经存在(你说已经加了,这步主要是确认没有拼写错误)。

  2. 等待控制台配置生效
    Google Cloud控制台的配置有时候需要1-5分钟才能同步到OAuth服务,修改完别立刻测试,等几分钟再试。

  3. 清除浏览器缓存或用隐私窗口测试
    浏览器可能会缓存旧的OAuth请求状态,用隐私窗口可以避免这个问题,确保测试的是最新配置。

额外检查点

  • 确认你的.env文件里的NoteClientId和NoteClientSecret是对应正确的Google Cloud项目的,别不小心用了其他项目的凭据。
  • 协议(http/https)要一致:如果代码里用http,控制台里的URI也要是http,不能混着来。

按上面的步骤改完,应该就能解决redirect_uri_mismatch的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:07:33