大家好,我是yangyang.本日禀享一个微信开拓问题-“网页授权域名受限,如何办”,想必,也有很多小伙伴早已碰着并办理了.
方案一:中转代理做事-代码实现
思路流程
准备一个中间域名,假设叫:oauth.888.com微信"大众年夜众号网页授权上填这个代理域名 oauth.888.com所有 须要微信网页授权的客户端页面都向 oauth.888.com 要求然后由 aoauth.888.com 统一向 微信服务器进行发起网页授官僚求https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https://chong.qq.com/php/index.php?d=&c=wxAdapter&m=mobileDeal&showwxpaytitle=1&vb2ctag=4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
图为scope即是snsapi_userinfo时的授权页面
用户赞许授权后
如果用户赞许授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
code解释:
code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能利用一次,5分钟未被利用自动过期。
微信服务器带着code 重定向 oauth.888.comoauth.888.com 将code 拼接真实客户端须要授权页面的地址 为 url- 假设真实客户端是:shop.888.com- 真实客户端进行网页授权:要求到oauth.888.com,假设是:https://oauth.888.com?redirect=https://shop.888.com- oauth.888.com 将code 拼接真实客户端须要授权页面的地址 为 url:https://shop.888.com?code=CODE&state=STATE
oauth.888.com 重定向 url 到客户端客户端可以通过 url 拿到 微信授权过的 code
流程图
图来自:https://blog.csdn.net/u013887008/article/details/119979824
伪代码
真实客户端shop.888.com 根路径(用php举例),入口文件index.php 写入如下代码,当用户访问就会走入上面的流程
header("location:https://ouath.888.com/code.php?redic=redirect=https://shop.888.com");
参考文章:https://blog.csdn.net/u013887008/article/details/119979824
方案二:中转代理做事-nginx实现思路流程
准备一个中间域名,假设叫:oauth.888.com然后在这个通用域名的机器上,配置nginx 代理转发(proxy_pass),转发到专门的项目就可以 :比如A项目的实际域名是shop.888.com。利用这种方案往后,在微信"大众年夜众号里面的访问路径则是oauth.888.com/shop比如B项目的实际域名是erp.888.com。利用这种方案往后,在微信"大众年夜众号里面的访问路径则是oauth.888.com/erp这样的做的缘故原由有以下几点:① 多条业务线,可以不用塞在一个目录下面。大家独立管理支配自己的业务线项目代码就可以。oauth.888.com则统一卖力微信配置文件的验证和nginx转发
# oauth.888.com机器的nginx配置文件 location /MP_verify_666.txt { add_header Content-Type "text/plain"; alias /www/wwwroot/shop.888.com/public/MP_verify_666.txt; } location /shop/ { proxy_pass https://shop.888.com/; } location /erp/ { proxy_pass https://shop.888.com/; }
② 域名友好型,各项目业务线可以在oauth.888.com下面设置符合自己业务需求的目录名。比如iot业务可以设置为oauth.888.com/iot/
③ 具备可扩展性,后期再在当前"大众号增加其他业务线的项目,只须要在oauth.888.com 的nginx配置文件 增加一条proxy_pass配置即可
参考文章:https://blog.csdn.net/weixin_44050791/article/details/132095710
总结以上两种方案,无论是通过中转代理做事的代码实现还是通过Nginx实现,都可以有效地办理微信开拓中碰着的网页授权域名受限的问题。这两种办理方案不仅可以帮助开拓者避免因域名受限而导致的授权失落败,还供应了灵巧性和扩展性,使得多个业务线可以独立管理支配自己的项目代码,同时在须要增加其他业务线的项目时,也可以轻松地进行扩展