Google OAuth2配置后仍出现redirect_uri_mismatch错误求助
解决Google OAuth2的redirect_uri_mismatch错误
无需等待,配置立即生效
Google Cloud控制台的重定向URI配置一般几分钟内就会同步,一小时仍报错肯定不是等待的问题,直接排查细节。严格核对URI的精确匹配
Google对重定向URI的匹配是完全精确的,哪怕差一个字符、大小写、斜杠都会触发错误:- 对比控制台里的
https://edit.elite80-001.ihousedev.com/oauth2callback和授权URL解码后的redirect_uri,确保完全一致(无多余空格、无末尾斜杠、域名大小写一致)。 - 控制台里前三个不带
/oauth2callback的URI确实没必要,建议删除,减少排查干扰。
- 对比控制台里的
确认OAuth客户端类型与Client ID匹配
- 确保你配置重定向URI的是「Web应用」类型的OAuth客户端,桌面应用、iOS/Android等其他类型的配置入口不同,不能混用。
- 核对授权URL里的
client_id和控制台对应客户端的ID完全一致,避免误用项目内其他客户端的ID。
重点检查token交换阶段的redirect_uri
很多人会在授权请求里用对了redirect_uri,但后续用授权码换access token时,错误使用了其他URI(比如你state参数里的https://webhosts.elite80-001.ihousedev.com/-/ControlGoogleAnalytics/oauth2callback)。
必须保证:授权请求的redirect_uri和交换token时的redirect_uri完全相同,否则依然会触发匹配错误。清除缓存或用隐身模式测试
浏览器缓存的旧会话、Cookie可能导致请求异常,用隐身模式重新发起授权请求,排除缓存干扰。修复代码拼接的潜在问题
你的PHP代码拼接login_hint时,要确保账号名没有特殊字符(如&、=),必须做URL编码,否则会破坏授权URL结构,导致redirect_uri参数被篡改:// 正确做法:对login_hint的值做URL编码 $encoded_login_hint = urlencode($google_user_account_name); $this->google_oauth_url = $createAuthUrl() . "&login_hint={$encoded_login_hint}";
内容的提问来源于stack exchange,提问作者Andy Wallace
相关产品推荐
相关产品推荐

