Skip to content

微信网页授权域名大于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没有加到微信网页授权域名中,也正常拿到codestate了。后续就是继续获取openid与AccessToken了。

最后

这里用的示例域名wechat-oauth2.mosong.cc,如果你加到你公众号的网页授权域名中,你也可以用,但是添加需要我在这个根目录放验证文件。

成功用一个专用二级域名做重定向,作为微信网页授权域名,解决所有项目的授权的问题,还没有任何使用限制。

(完)