解决一个微信号同时支持多个环境网页授权问题


Posted in Javascript onAugust 07, 2019

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

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

解决一个微信号同时支持多个环境网页授权问题

本文总结分享一下思路:

主要是通过中间页面代理获取微信授权CODE,然后跳转到对应需要使用的环境URL下;

比如原来开发环境, 微信中授权域名配置的是dev.xxx.com,那么现在配置的是一个代理域名proxy.xxx.com,通过代理域名拿到code后在跳回dev.xxx.com,如下图所示

解决一个微信号同时支持多个环境网页授权问题

代码片段 getCode.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>微信授权登录</title>
</head>
<body>
</body>
<script>
 var code = getPara("code");
 if(!code)
 {
  var redirect = getPara("url");
  var appid = getPara("appid");
  var _from = getPara("from");
  var redirect_url = encodeURIComponent('https://proxy.xxx.com/getCode.html?url='+redirect);
  var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri=" + redirect_url + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  location.href = url;
 }else{
  var redirect = getPara("url");
  var code = getPara("code");
  if(redirect.split('?').length > 1){
  location.href = redirect + "&code=" + code;
  }else{
    location.href = redirect + "?code=" + code;
  }
 }
 function getPara(name){
  var url = location.href;
  eval("var reg = /("+name+"=[A-Za-z0-9_,-@!#\.\:\/]*)/i")
  var match = url.match(reg);
  if(match && match.length > 1){
    var arr = match[0].split("=");
  arr.shift();
  return arr.join('=');
  }else{
   return "";
  }
 }
</script>
</html>

使用方法https://proxy.xxx.com/getCode.html?url=http://dev.xxx.com/uinfo&appid=wx6d421c188956xx95

总结

以上所述是小编给大家介绍的解决一个微信号同时支持多个环境网页授权问题呢,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript 获取图片颜色
Apr 05 Javascript
jQuery UI-Draggable 参数集合
Jan 10 Javascript
javascript实现存储hmtl字符串示例
Apr 25 Javascript
iframe里的页面禁止右键事件的方法
Jun 10 Javascript
javascript数据类型示例分享
Jan 19 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
javascript制作网页图片上实现下雨效果
Feb 26 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
8 行 Node.js 代码实现代理服务器
Dec 05 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
Vue父子模版传值及组件传值的三种方法
Nov 27 Javascript
js回到页面指定位置的三种方式
Dec 17 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 #Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 #Javascript
javascript中的数据类型检测方法详解
Aug 07 #Javascript
scrapyd schedule.json setting 传入多个值问题
Aug 07 #Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 #Javascript
微信小程序引入Vant组件库过程解析
Aug 06 #Javascript
Vue数据绑定实例写法
Aug 06 #Javascript
You might like
建站常用13种PHP开源CMS比较
2009/08/23 PHP
php遍历目录viewDir函数
2009/12/15 PHP
php中spl_autoload详解
2014/10/17 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
js实现移动端轮播图
2020/12/21 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python图书管理系统
2020/04/05 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
pytorch梯度剪裁方式
2020/02/04 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
美国著名手表网站:Timepiece
2017/11/15 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
小学作文之描写天气
2019/08/15 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers