微信公众号中更换域名
更新
如果需要实现微信授权支持多个回调域名,可以参考我这个开源项目:GetWeixinCode
问题描述
项目刚做的时候,并没有找到好的域名,所以用了一个比较长的域名。后来公司花钱买了一个心仪的域名,理所当然,我们需要启用新域名了。
我们的 H5 站点是基于微信的,由于微信的各种坑,这里有很多值得注意的地方。
首先,需要在公众号设置中,将新域名加入到业务域名以及 JS 接口安全域名中,在微信支付的开发配置中,也要将新域名加入支付授权目录中。这几个比较容易,因为他们都支持配置多个域名。
我们的页面加载之后会立即通过静默授权跳转去拿用户的 code 以换取 openid,来实现自动登录,为了减少跳转,我们在微信公众号的自定义菜单中配置的链接就是微信的授权链接
https://open.weixin.qq.com/connect/oauth2/authorize?XXXXX&redirect_uri=h.xxx-old.com
这里比较坑的是,授权回调页面域名只能配置一个,而且自定义菜单的修改最慢要 24 小时才能生效,而且你没法确定是什么时候生效,有的用户会生效,有的用户仍是旧的链接。所以这里的链接不能冒然改成新链接。不过我们可以这么实现。
解决方案
- 修改公众号自定义菜单中配置的链接,直接改为原域名
http://h.xxx-old.com
,在页面代码中做判断,如果没有拿到 code 参数,就主动跳转到微信的授权页面去拿 code(这个原来就做了,为了让用户直接访问域名的时候也能拿到 code)。这个生效可能需要 24 小时,稳妥的做法就是等 24 小时之后再进行后面的操作。 - 将代码中跳转到微信授权页面的 redirect_uri 改为新域名:
https://open.weixin.qq.com/connect/oauth2/authorize?XXXXX&redirect_uri=h.xxx-new.com
同时将微信公众号中的授权回调页面域名改为新域名(这个是立即生效的)。这时,无论是从旧域名访问还是从新域名访问,授权回调的时候,都会成功跳转到新域名,并且带上 code 了。 - 修改公众号中的链接,改为微信授权链接,并且 redirect_uri 写成新域名:
https://open.weixin.qq.com/connect/oauth2/authorize?XXXXX&redirect_uri=h.xxx-new.com
这个时候,无论是更新后的链接还是尚未更新的链接,都能成功授权,只是直接用域名会多跳转一下而已。
Done.
评论区