考虑到有些萌新同学可能不太了解微信开发的流程,所以简单编辑下作为解释,以下代码只作为参考,开发中使用请自己修改好appid、中转站域名、回调地址、state状态码等

中转站

1.首先,用一个域名做中转,如http://zhongzhuan.kmwl.com,在这个域名解析的根目录下放例子中的中转站文件index.php和huidiao.php

index.php
<?php
if(isset($_GET['param']) && !empty($_GET['param'])){$param = urldecode($_GET['param']);if(!strpos($param, '?')){$action = "huidiao.php?param=" .$param.'?1=1';}else{$action = "huidiao.php?param=" .$param;}//发起授权$appid = "你的APPID";  $redirect_url = "http://zhongzhuan.kmwl.com/".$action;$state = empty($_GET['state']) ? 'STATE' : $_GET['state'];$code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".urlencode($redirect_url)."&response_type=code&scope=snsapi_userinfo&state=".$state."#wechat_redirect";header("location: ".$code_url);    die;
}else{echo "参数错误请携带参数名为param的参数";
}
huidiao.php
<?php
if(isset($_GET['code']) && !empty($_GET['code'])){$code = $_GET['code'];$param = $_GET['param'];header("location:".$param."&code=".$code);
}else{echo '参数错误为携带code';
}

2.在真正项目域名中使用以下代码,服务端调用和js端调用二选一,运行项目获取微信服务器返回的数据,就可以调用微信的接口了

服务端调用

 $appurl = "http://zhongzhuan.kmwl.com/index.php?param=".urlencode(你的回调地址)."&state=你的state码,一般为STATE";
header('location:' . $appurl);

js端调用

var url = "http://zhongzhuan.kmwl.com?param="+littleUrl.encode('你的回调地址') ."&state=你的state码,一般为STATE";
window.location.href = url

js访问地址转码代码

var littleUrl ={// public method for url encodingencode : function (string){return escape(this._utf8_encode(string));},// public method for url decodingdecode : function (string){return this._utf8_decode(unescape(string));},// private method for UTF-8 encoding_utf8_encode : function (string){string = string.replace(/\r\n/g,"\n");var utftext = "";for (var n = 0; n < string.length; n++){var c = string.charCodeAt(n);if (c < 128){utftext += String.fromCharCode(c);}elseif((c > 127) && (c < 2048)){utftext += String.fromCharCode((c >> 6) | 192);utftext += String.fromCharCode((c & 63) | 128);}else{utftext += String.fromCharCode((c >> 12) | 224);utftext += String.fromCharCode(((c >> 6) & 63) | 128);utftext += String.fromCharCode((c & 63) | 128);}}return utftext;},// private method for UTF-8 decoding_utf8_decode : function (utftext){var string = "";var i = 0;var c = c1 = c2 = 0;while ( i < utftext.length ){c = utftext.charCodeAt(i);if (c < 128){string += String.fromCharCode(c);i++;}elseif((c > 191) && (c < 224)){c2 = utftext.charCodeAt(i+1);string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));i += 2;}else{c2 = utftext.charCodeAt(i+1);c3 = utftext.charCodeAt(i+2);string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));i += 3;}}return string;}}
//export default littleUrl; //小程序,uniapp等框架需要暴露接口变量时使用

转自:解决微信公众号只能设置两个网页授权域名的究极优化版本
记录学习用,侵删

微信公众号只能设置两个网页授权域名的解决方案相关推荐

  1. 微信公众号H5开发,实现网页授权(静默登录)

    文章目录 业务场景 具体实现 1. 配置微信后台 2. 上传校验文件 3. 网页静默授权 附:官方文档 业务场景 最近我司有个2C的需求,以分享链接的形式推广某线上活动, 要求一个链接覆盖微信.H5和 ...

  2. 微信公众号前后端分离项目网页授权登录问题

    问题描述 微信公众号网页授权登录,因为是前后端项目,所以跳转是在前端做的,所以回调地址配置的是前端页面地址,例如:xxx/callback?redirect_url=需要登录才能访问的页面地址,问题发 ...

  3. 点击微信公众号菜单按钮 跳转网页授权登录

    流程: 用户点击菜单按钮 -–> 发送页面授权请求到微信后台 -–> 得到 code 发送到 我们服务器后台的url -–> 将 code 参数发送到微信后台获取用户的openid返 ...

  4. php实现微信网页授权登录界面,微信公众号 前后端分离实现网页授权登录

    开发语言 后端:thinkphp5+easywechat3+php-jwt 前端:html 实现思路 需要授权登录页面,在页面加载完成时,判断是否登录,如果未登录访问后台授权登录链接 前端代码(主要j ...

  5. 实例:用C#.NET手把手教你做微信公众号开发(22)--网页里通过OAuth获取用户openid

    第一篇:理论 如果一个用户并未关注某个公众号,只是在微信内打开了公众号web服务器上的某个网页,要如何获取用户的openid以及用户的微信信息,以便实现业务逻辑呢?本篇讲述网页授权OAuth获取微信用 ...

  6. 公众号 关注_微信公众号关注图文跳转网页如何操作实现?

    对于微信公众号关注图文跳转网页的场景实现,微号帮平台提供了粉丝关注定时推送功能实现,公众平台提供了开发接口编程实现功能效果,都能实现微信公众号关注图文跳转网页,只要网页能正常在个人微信上打开浏览都能设 ...

  7. php微信公众号开发难吗,PHP微信公众号开发的两种模式

    微信现在已经深入到每个家庭,每个人至少人手一个账号是确定的,所以开发公众号也是很普遍的,今天爱站技术频道小编为大家带来的是PHP微信公众号开发的两种模式,感兴趣的小伙伴们可以参考下面的介绍. 学习步骤 ...

  8. 关于微信公众号服务器设置token的问题

    关于微信公众号服务器设置token的问题 http://blog.csdn.net/shb2058/article/details/77247602

  9. 微信公众号自动回复设置教程

    微信公众号菜单等功能如何开通 自定义菜单最大的优点是减少了用户的认知门槛,可以将公众账号里的重点信息入口直观的暴露给用户.当用户进入到公众账号时,可以一目了然的了解相关的服务,只需要点击,不需要再通过 ...

最新文章

  1. 反正我不信!马斯克谈元宇宙:没人愿意把屏幕贴脸上
  2. OSI中端到端与点到点区别。
  3. 【剑道】用语中日对照
  4. javascript常用的事件
  5. 【TensorFlow】笔记4:图像识别与CNN
  6. oracle事务处理 自动提交
  7. 基于jQuery的对象切换插件:soChange 1.5 (点击下载)
  8. asp mysql 连接字符串,在ASP中连接数据库(连接字符串)
  9. Centos7下安装Python3.5
  10. 基于jsTree的无限级树JSON数据的转换
  11. 视频教程-webservice入门到精通(备java基础,xml,javaee框架)-Java
  12. ROS串口通信协议解析
  13. 选择信号的采样频率和信号长度的技巧
  14. 2017 Multi-University Training Contest - Team 4 :Wavel Sequence
  15. 拼图java 源代码,Java语言实现拼图游戏源代码
  16. 腾讯云 wafer2 上手,轻松部署小程序后端!
  17. FleaPHP 开发指南 - 6. 访问数据库
  18. 批量doc 转换为docx 文档
  19. 部署报错$notify
  20. DCDC 电源PCB layout布局

热门文章

  1. 系统管理之Systemd详解(centos7)
  2. 哪款看板工具好? 敏捷工具推荐
  3. 日紫白飞星算法_地理紫白飞星择日口诀解析
  4. PLC 变频器、触摸屏综合实训平台
  5. C语言——将数字和数字字符输入给char型变量会如何?
  6. JAVA之设置背景图片的几种方法
  7. (三)、IText通过pdf模板生成pdf文件(可用做回执单等功能)
  8. centos7 串口配置修改_Linux串口参数设置
  9. 属羊的几月出生最好命
  10. python爬虫——汽车之家数据