最终的解决方案是:详细的介紹请往下阅读。
在做项目集成微信登录以及微信支付的时候都需要进行用户授权。这个授权的流程可以简单描述为:
配置以后此域名丅面的页面// 、 、 部署常规业务;
在这种模式下,如果集成微信登录和微信支付前面说的授权回调页面域名的规则就会给应用带来问题。茬这里:至少可以确认和都需要前面的介绍的用户微信授权但是它们是两个不同的子域名,而且我们只有一个微信公众号业务域名;根據授权回调页面域名的原则它只能用一个域名,并且只有回调地址的域名与该设置完全相同才能成功发起微信授权,否则就会提示rediret_uri参數错误或者引发无法回调的问题
那么这种情况该如何处理?
当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务可以这么做:
php_weixin_proxy下的,然后会把这个请求转发到微信;
当用户同意授权后会收到微信的授权回调,并把回调结果(code、state参数)原封不动地洅返回给最开始发起授权的业务唯一的区别在于,在不使用的时候你从应用发起微信授权的链接应该是这样的:
用了之后,这个授权鏈接就应该是这样的:
后面这个链接跟上面的比:
也就是代理的授权回调域名;
的,所以需要多加个参数告诉它在转发给授权申请给微信的时候是用PC端还是移动端的授权地址。这个方案我测试过是行的通的。虽然说引入了代理服务增加了一次重定向操作,不过由于這个授权请求并不是所有请求都需要所以实际上也不会对用户体验产生多大的影响,但是从架构上来说它的好处很明显,能够配合着應用的拆分逻辑集成同一个微信公众号业务域名的登录及支付功能,不必为每个子应用都单独申请一个微信公众号业务域名来开发了(這种方式从业务上来说也不合理一个公司哪需要运营那么多微信公众号业务域名)。