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自然会判定为不匹配。
解决步骤
- 修正代码中的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 }
确认控制台配置的URI精确匹配
检查Google控制台里的重定向URI列表,确保http://localhost:8080/google_callback已经存在(你说已经加了,这步主要是确认没有拼写错误)。等待控制台配置生效
Google Cloud控制台的配置有时候需要1-5分钟才能同步到OAuth服务,修改完别立刻测试,等几分钟再试。清除浏览器缓存或用隐私窗口测试
浏览器可能会缓存旧的OAuth请求状态,用隐私窗口可以避免这个问题,确保测试的是最新配置。
额外检查点
- 确认你的.env文件里的
NoteClientId和NoteClientSecret是对应正确的Google Cloud项目的,别不小心用了其他项目的凭据。 - 协议(http/https)要一致:如果代码里用http,控制台里的URI也要是http,不能混着来。
按上面的步骤改完,应该就能解决redirect_uri_mismatch的问题了!
内容的提问来源于stack exchange,提问作者Cream
相关产品推荐
相关产品推荐

