目前公司有四套环境DEVTESTPREONLINE,所以我们的代码能让用户使用了,就和升级打怪一样要经过这四关。这两天又处理了个微信授权回调需要到不同环境的问题,记录下给大家提供一个思路。我们都知道微信公众号或者微信开放平台的网站应用的回调域名只能配置一个,下面是微信开放平台的网站应用的回调域名配置

微信回调java 微信回调系统授权_微信


而微信的Oauth2授权回调的流程是这样的:

A) 用户访问第三方服务,第三方服务通过构造OAuth2链接(参数包括当前第三方服务的身份ID,以及重定向URI),将用户引导到认证服务器的授权页

B) 用户选择是否同意授权

C) 若用户同意授权,则认证服务器将用户重定向到第一步指定的重定向URI,同时附上一个授权码。

D) 第三方服务收到授权码,带上授权码来源的重定向URI,向认证服务器申请凭证。

E) 认证服务器检查授权码和重定向URI的有效性,通过后颁发AccessToken(调用凭证)

微信回调java 微信回调系统授权_网关_02


但是我们有多套环境,需要在同步的时候方便的切换到不同的环境

方式一:所有的回调授权都在线上处理

这种方式是回调都在线上的服务里,在回调的路径上加上环境参数,通过业务逻辑调用对应环境的接口处理对应的逻辑

方式二:通NGINX做转发

这种方式是在域名前加一层NGINX,在回调的路径上加上环境参数或者路径,通过NGINX转发到对应环境的接口处理对应的逻辑

方式二:通网关做转发

这种方式是需要有一个统一的网关转发的服务,在回调的路径上加上环境参数或者路径,通过网关转发到对应环境的接口处理对应的逻辑。我们目前用的是Spring Cloud Gateway 通过可视化的配置页面,可以很简单配置转发的路径,不需要任何开发,贼简单方便

如上是我所了解的三种方式,当然还有其他的方式,我只总结自己使用过的,优劣根据自己的实际业务不同。