[{"data":1,"prerenderedAt":131},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2015\u002Fchange-domain-in-weixin":20,"surroundPosts-\u002Fposts\u002F2015\u002Fchange-domain-in-weixin":119},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":98,"cover":98,"coverSize":98,"date":99,"description":95,"draft":100,"extension":101,"hideComments":100,"location":102,"meta":103,"navigation":104,"path":105,"readingTime":106,"seo":111,"sitemap":112,"stem":113,"tags":114,"time":117,"weather":98,"__hash__":118},"posts\u002Fposts\u002F2015\u002F20150820.change-domain-in-weixin.md","微信公众号中更换域名",{"type":24,"value":25,"toc":94},"minimark",[26,30,41,44,47,50,53,56,64,67,91],[27,28,29],"h4",{"id":29},"更新",[31,32,33,34],"p",{},"如果需要实现微信授权支持多个回调域名，可以参考我这个开源项目：",[35,36,40],"a",{"href":37,"rel":38},"https:\u002F\u002Fgithub.com\u002FHADB\u002FGetWeixinCode",[39],"nofollow","GetWeixinCode",[42,43],"hr",{},[27,45,46],{"id":46},"问题描述",[31,48,49],{},"项目刚做的时候，并没有找到好的域名，所以用了一个比较长的域名。后来公司花钱买了一个心仪的域名，理所当然，我们需要启用新域名了。",[31,51,52],{},"我们的 H5 站点是基于微信的，由于微信的各种坑，这里有很多值得注意的地方。",[31,54,55],{},"首先，需要在公众号设置中，将新域名加入到业务域名以及 JS 接口安全域名中，在微信支付的开发配置中，也要将新域名加入支付授权目录中。这几个比较容易，因为他们都支持配置多个域名。",[31,57,58,59,63],{},"我们的页面加载之后会立即通过静默授权跳转去拿用户的 code 以换取 openid，来实现自动登录，为了减少跳转，我们在微信公众号的自定义菜单中配置的链接就是微信的授权链接\n",[60,61,62],"code",{},"https:\u002F\u002Fopen.weixin.qq.com\u002Fconnect\u002Foauth2\u002Fauthorize?XXXXX&redirect_uri=h.xxx-old.com","\n这里比较坑的是，授权回调页面域名只能配置一个，而且自定义菜单的修改最慢要 24 小时才能生效，而且你没法确定是什么时候生效，有的用户会生效，有的用户仍是旧的链接。所以这里的链接不能冒然改成新链接。不过我们可以这么实现。",[27,65,66],{"id":66},"解决方案",[68,69,70,78,85],"ol",{},[71,72,73,74,77],"li",{},"修改公众号自定义菜单中配置的链接，直接改为原域名",[60,75,76],{},"http:\u002F\u002Fh.xxx-old.com","，在页面代码中做判断，如果没有拿到 code 参数，就主动跳转到微信的授权页面去拿 code（这个原来就做了，为了让用户直接访问域名的时候也能拿到 code）。这个生效可能需要 24 小时，稳妥的做法就是等 24 小时之后再进行后面的操作。",[71,79,80,81,84],{},"将代码中跳转到微信授权页面的 redirect_uri 改为新域名：\n",[60,82,83],{},"https:\u002F\u002Fopen.weixin.qq.com\u002Fconnect\u002Foauth2\u002Fauthorize?XXXXX&redirect_uri=h.xxx-new.com","\n同时将微信公众号中的授权回调页面域名改为新域名（这个是立即生效的）。这时，无论是从旧域名访问还是从新域名访问，授权回调的时候，都会成功跳转到新域名，并且带上 code 了。",[71,86,87,88,90],{},"修改公众号中的链接，改为微信授权链接，并且 redirect_uri 写成新域名：\n",[60,89,83],{},"\n这个时候，无论是更新后的链接还是尚未更新的链接，都能成功授权，只是直接用域名会多跳转一下而已。",[31,92,93],{},"Done.",{"title":95,"searchDepth":96,"depth":96,"links":97},"",2,[],null,"2015-08-20",false,"md","莘庄",{},true,"\u002Fposts\u002F2015\u002Fchange-domain-in-weixin",{"text":107,"minutes":108,"time":109,"words":110},"4 min read",3.27,196200,654,{"title":22,"description":95},{"loc":105},"posts\u002F2015\u002F20150820.change-domain-in-weixin",[115,116],"技术","前端","上午","r8Hm16aVzTZvxFywiwcPdbBnSlvUwb2dxVuKq1sK1x0",[120,126],{"title":121,"path":122,"stem":123,"date":124,"description":125,"children":-1},"The End of 2015","\u002Fposts\u002F2015\u002Fthe-end-of-2015","posts\u002F2015\u002F20151216.the-end-of-2015","2015-12-16","不知不觉，2015 年就快到尽头了。",{"title":127,"path":128,"stem":129,"date":130,"description":95,"children":-1},"VS2015 打包程序无法在 XP 下安装的问题","\u002Fposts\u002F2015\u002Fvs2015-installer-not-work-in-windows-xp","posts\u002F2015\u002F20150730.vs2015-installer-not-work-in-windows-xp","2015-07-30",1777579149120]