服务号授权域名不够用,如何解决微信网页授权回调域名只能设置2个

本文部分知识来自网络后加工,目前服务号授权域名只有两个,项目一个一个上,后发现域名不够用,在此记录下。

项目进行微信开发, 认证了一个微信服务号专门用于内部测试,但是内部可能存在多套不同环境(开发dev、测试sit、预发布uat)等,由于微信限制一个服务号只能配置2个网页授权域名, 又不可能给每个环境单独配一个服务号,这样不仅需要成本而且很浪费资源, 所以重点需要解决下面这个问题:

1、可以自动区分环境。比方部署开发环境。url可能是http://dev.xxx.com/api/,而在测试环境的时候应该是http://sit.xxx.com/api/。而并且不能写死,否则开发和测试就要换来换去。非常麻烦.

2、总结分享一下思路:
主要是通过中间页面代理获取微信授权CODE,然后跳转到对应需要使用的环境URL下;
比如原来开发环境, 微信中授权域名配置的是dev.xxx.com,那么现在配置的是一个代理域名proxy.xxx.com,通过代理域名拿到code后在跳回dev.xxx.com,如下图所示

服务号授权域名不够用,如何解决微信网页授权回调域名只能设置2个


解决办法

假设我们有 A.example.com 、 B.example.com、C.example.com域名想使用微信授权,我们可以将网页授权域名设置为A.example.com。

步骤如下:

设置回调域名。将域名 A.example.com
微信公众平台->设置->公众号设置->功能设置->网页授权域名

在域名 A.example.com 添加中间页 get-weixin-code.html
中间页不一定在根域名下。在这里我们放在根域名下。中间页的访问地址如下,https://A.example.com/get-weixin-code.html

假设域名 B.example.com/game需要进行网页授权。我们可以使用下面链接进行授权,获取微信的授权code
https://A.example.com/get-weixin-code.html?appid=XXXX&scope=snsapi_base&state=hello-world&redirect_uri=https%3A%2F%2FB.example.com%2Fgame

最终会回调到这个地址 https://B.example.com/game?code=XXXXXXXXXXXXXXXXX&state=hello-world,这样就可以拿到授权 code 和 state 参数。

利用授权 code ,请求自己后端服务器,获取微信用户信息。


中间页的原理

中间页主要做了依次做了两件事情:

服务号授权域名不够用如何解决微信网页授权回调域名只能设置2个

跳转到微信授权页
授权成功,重定向到目标页。
微信后端逻辑

微信授权流程

第一步:用户同意授权,获取code
第二步:通过code换取网页授权access_token
第三步:刷新access_token(如果需要)
第四步:拉取用户信息(需scope为 snsapi_userinfo)

总结

使用中间页的方式,虽然多了一次请求。但是满足了多个域名使用同一个微信号进行网页授权。在实际的使用过程中,我们将get-weixin-code.html页,放在了nginx所在的服务器上。经测试,跳转都在毫秒级完成,用户几乎无感知。

但是,也有不足的地方。使用中间页后,当用户不想进行授权时,微信授权页不会自动关闭,而是停留在中间页。直接授权方式,却可以自动关闭授权流程,回到原位置(聊天窗口或朋友圈)。


代码片段GetWeixinCode

https://github.com/HADB/GetWeixinCode

分享不易,请支持本站其他资源

印尼手机话费充值:http://recharge.amynik.com/
新版axureshop产品原型网:http://www.axureshops.com
AxureShop商城:http://axure.amynik.com/
情趣商城:http://sex.chanpindashi.com/
Axure工具集下载:http://www.chanpindashi.com/2019/12/02/1997.html
产品大师:http://www.chanpindashi.com/
源码商城:http://mall.amynik.com/list/1
axureshop产品原型网(旧版停止更新):http://axureshop.amynik.com/
产品经理论坛:http://bbs.amynik.com
淘宝优惠券:http://taobao.chanpindashi.com/
京东优惠券:http://jd.chanpindashi.com/?chanpindashi.com

最后编辑:2020年04月16日 ©著作权归作者所有

发表评论

×