微信多域名实现如何回跳
微信公众号后台只能设置1个回调域名,不知道回调多个有什么用途, 可以在回跳域名中通知其他地址。
对于多域名分布式系统, 可以使用nginx的反射代理
如果我有两个站点,一个是主站,还有一个商城,甚至还有个其它应用,怎么能做到都支持微信自动登录呢?
操作方法
- 01
其实在微信的官方文档中有明确的说明
- 02
在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;
- 03
授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名登录注册都可以进行OAuth2.0鉴权。 但某些网站无法进行OAuth2.0鉴权
- 04
看结构 到微信公众号后台,开发-接口权限,找到『网页授权获取用户基本信息』设置好回调域名,比如你设置的是 open.weixin.com
- 05
直接根据官方文档进行请求,微信并没有判断请求来源是否是回调域名,所以可以这样直接请求 REDIRECT_URI 参数应该是 open.weixin.com/wechat/callback 这个参数是回跳的关键参数,微信会检测此参数是否你在公众号后台设置的回调域名 授权回跳到 open.weixin.com/wechat/callback 此时你需要在 open.weixin.com 上开发中间服务 根据图示,完成鉴权和获取用户数据,并存储相应数据 完成用户数据读取和保存,就立即回跳 123.weixin.com 怎么判断回跳地址? 可以巧妙利用state参数,也可以修改REDIRECT_URI参数为open.weixin.com/wechat/callback?source=123.weixin.com来为二跳做准备
- 06
回跳到123.weixin.com 不建议直接带用户数据明文跳转,应该是把openid/state等参数跳回123.weixin.com,然后123.weixin.com根据openid/token向中间服务 open.weixin.com 获取用户数据
- 07
但是微信授权只能设置一个回调域名和一个测试的回调域名 对于多域名分布式系统, 可以使用nginx的反射代理: