微信网页授权域名大于2个的解决方法(不限数量)
微信网页授权域名大于2个的解决方法。
问题描述
在做微信公众号做网页授权,提示 redirect_uri域名与后台配置不一致 ,然后去微信后台配置网页授权域名,发现微信限制最多配置2个。
一般情况:开发环境、测试环境、生产环境,这就已经大于2个了。可能还有不同业务线,多个不同业务的项目,更不够用了。
解决方法
直接看我的Nginx配置,应该一看就懂。
配置文件 /etc/nginx/conf.d/wechat-oauth2.mosong.cc.conf
server {
listen 80;
listen 443 ssl;
server_name wechat-oauth2.mosong.cc;
include /etc/nginx/common/ssl.mosong.cc.conf; # https证书
# 微信验证文件,因/根目录已经配置重定向了,这个文件就按需写全名
location /MP_xxxx.txt {
root /var/nginx/html/;
}
# 重定向URI,一级目录是域名
location / {
return 302 https:/$request_uri;
}
}
不用额外服务,在你的nginx加上这个简单的配置就够了,能支持无数量限制的业务域名使用。
写个列子解释一下,比如要做微信网页授权的业务网站是: https://blog.mosong.cc
第一步: 拼接授权链接
https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s#wechat_redirect
其它appid、scope、state自行填自己的实际值,重点是redirect_uri
参数,链接一级目录使用业务域名,写成下面这个形式:
https://wechat-oauth2.mosong.cc/blog.mosong.cc/wxauth/callback
最后跳转微信授权的链接是:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=https%3A%2F%2Fwechat-oauth2.mosong.cc%2Fblog.mosong.cc%2Fwxauth%2Fcallback&response_type=code&scope=scope&state=state#wechat_redirect
第二步: 跳转微信接收回调
上面的链接跳转微信,微信回调拼接code的链接就是:
https://wechat-oauth2.mosong.cc/blog.mosong.cc/wxauth/callback?code=xxxxx&state=xxx
因这个域名已经在网页授权域名里配置过了,所以能正常跳转接收code。
第三步: Nginx重定向到业务服务
结合第二步的链接再看我贴的Nginx配置文件内容
location / {
return 302 https:/$request_uri;
}
在Nginx里做302重定向(301也可以)跳转到业务链接。
注意这里的https:/
不是写错了,故意这么写的。因$request_uri
值是/blog.mosong.cc/wxauth/callback?code=xxxxx&state=xxx
,开头已经确定有一个/
了。
所以这里Nginx做302的最终链接是:
https://blog.mosong.cc/wxauth/callback?code=xxxxx&state=xxx
到这里,就完成了,整个链接都是你业务服务的。
业务域名blog.mosong.cc
没有加到微信网页授权域名中,也正常拿到code
与state
了。后续就是继续获取openid与AccessToken了。
最后
这里用的示例域名wechat-oauth2.mosong.cc
,如果你加到你公众号的网页授权域名中,你也可以用,但是添加需要我在这个根目录放验证文件。
成功用一个专用二级域名做重定向,作为微信网页授权域名,解决所有项目的授权的问题,还没有任何使用限制。
(完)