之前有一段时间做了一个个人项目(公众号 H5),只有一个公众号,但是他有多个应用。微信文档上可以看到一个公众号最多可以授权 2 个域名,无法满足需求,此处仅仅记录一下解决问题的思路和办法。
其实这个问题也很简单,虽然我们其他的应用(域)不能和微信通讯,但是服务之间是可以通讯的,所以解决这个问题的核心是授权服务。如图:
那么问题就变得很简单了,下面说说具体的实现。
- 保证授权服务器能正常的进行微信授权登录和信息获取
- 所有的需要授权的 H5 页面全部使用授权服务器的授权重定向地址,需要注意的是我们需要在重定向地址上自定义正确的应用地址
- 授权重定向地址加载后再次重定向到自定义的应用地址并携带微信授权 code
- 应用 H5 将 code 传递到对应的后台服务,应用服务再向授权服务器请求 openid 等微信用户信息
- 授权服务器将微信服务器返回的数据返回到应用服务
其实整个流程走完,发现授权服务向是一个正向代理,但不仅仅是代理,还需要对微信的 appid、secretkey 等进行管理,否则多个应用分别管理 appid 和 secretkey 也会变得更加复杂。
[越努力,越幸运!]