开发环境下Google OAuth2登录服务提示“Connection Refused”问题求助
开发环境下Google OAuth2登录服务提示“Connection Refused”问题求助
嘿,这种本地正常、一部署到开发环境就掉链子的OAuth问题我也碰到过好几次,大概率是配置或者网络层面的疏漏,咱们一步步排查:
1. 先揪出最明显的配置矛盾
我看你贴的配置里有个致命的不一致:
- 后端
application-dev.yml的authorizedRedirectUris是http://xxx.xxx.xx.xxx:3000/oauth2/redirect - 前端的
OAUTH2_REDIRECT_URI却是http://xxx.xxx.xx.xxx:8080/oauth2/redirect
OAuth的回调URI必须完全一致,后端允许的地址、前端请求的地址、Google控制台配置的地址三者得统一,哪怕端口差一个数字都会被Google拒绝。这大概率是你当前问题的核心原因!
2. Google开发者控制台配置检查
你担心必须用域名其实是误解,公网IP地址是完全可以用的,但要注意几点:
- 把最终确定的回调URI(比如统一成8080或者3000端口的那个)同时添加到
Authorized redirect URIs里 Authorized JavaScript origins也要添加开发服务器的IP(带端口,比如http://xxx.xxx.xx.xxx:3000或者8080),这个字段是用来限制哪些域名/IP可以发起OAuth请求的- 确认你的OAuth客户端类型是「Web应用」,而不是桌面或其他类型,不同类型的配置要求不一样
3. 后端配置生效验证
别想当然认为application-dev.yml生效了,特别是Spring Boot这类框架:
- 检查启动命令有没有指定激活dev环境,比如要加
--spring.profiles.active=dev参数,不然默认可能加载的是其他环境配置 - 可以在后端日志里搜
authorizedRedirectUris,确认实际加载的是开发环境的配置值
4. 服务器网络与端口排查
你的服务器需要SSH验证,大概率是内网机器或者防火墙限制比较严:
- 检查服务器的防火墙/安全组规则,有没有开放你用到的8080、3000端口?外部(包括Google的OAuth服务器)要能访问到这些端口才行
- 如果服务器是内网没有公网IP,那Google根本没法回调到你的服务!这时候可以用Ngrok这类工具做端口转发,比如
ngrok http 8080,生成一个临时公网地址,然后把这个地址替换掉所有配置里的IP,包括Google控制台、前后端配置 - 在服务器上用
curl https://accounts.google.com/o/oauth2/auth测试下能不能连通Google的OAuth服务,排除服务器出网被限制的情况
快速修复步骤建议
- 统一前后端的回调URI,比如都改成
http://xxx.xxx.xx.xxx:8080/oauth2/redirect - 把这个统一后的URI添加到Google控制台的
Authorized redirect URIs,同时把http://xxx.xxx.xx.xxx:8080添加到Authorized JavaScript origins - 确认后端启动时激活了dev环境,且配置的
authorizedRedirectUris和上面的一致 - 开放服务器8080端口的外部访问权限,或者用Ngrok做端口转发(如果是内网机器)
备注:内容来源于stack exchange,提问作者Beesz
相关产品推荐
相关产品推荐

