解决微信网页授权多个域名(大于两个)

问题

微信进行网页授权时,需要填写授权域名,授权域名只有两个, 但是实际上可能有多个。不利于开发调试,每次都要修改,并且要发布到那个域名底下,相当麻烦

思路

  • 准备中间代理域名agent.example
  • 微信公众号网页授权上填这个代理域名 agent.example
  • 所有 需要微信网页授权的客户端页面都向 agent.example 请求
  • 然后由 agent.example 统一向 微信服务器进行发起网页授权请求
  • 微信服务器带着code 重定向 agent.example
  • agent.example 将code 拼接真实客户端需要授权页面的地址 为 url
  • agent.example 重定向 url 到客户端
  • 客户端可以通过 url 拿到 微信授权过的 code

流程图

使用程序实现

@Slf4j
@RestController
public class WechatAgentController {/*** 微信网页授权地址, 需要人工点击确认的那种*/private static final String AUTH_URL = "https://open.weixin.qq.com/connect/oauth2/authorize"+"?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";/*** 代理授权域名,换成你自己真实的公网域名!!*/private static final String DEFAULT_AUTH_HOST = "http://wx.open.vaiwan.com";private static final String CODE_URL = "wx/code?returnUrl={0}";/*** 授权** @param appId* @param redirectUrl 目标地址* @param authHost    中间代理域名,可直接访问到 /wx/oauth2, 可以不填* @param response* @throws IOException*/@GetMapping("/wx/oauth2")public void openAuth(@RequestParam String appId, @RequestParam String redirectUrl,@RequestParam(required = false) String agentHost,HttpServletResponse response) throws IOException {String middleUrl = StringUtils.hasText(agentHost) ? agentHost : DEFAULT_AUTH_HOST;if (middleUrl.lastIndexOf("/") != -1) {middleUrl = middleUrl.concat("/");}middleUrl = middleUrl.concat(CODE_URL);String tmpUrl = MessageFormat.format(middleUrl, redirectUrl);String realRedirectUrl = MessageFormat.format(AUTH_URL, appId, tmpUrl);//重定向到 /wx/code 请求response.sendRedirect(realRedirectUrl);}/*** 获取 code** @param code* @param returnUrl* @param response* @throws IOException*/@GetMapping("/wx/code")public void code(@RequestParam String code, @RequestParam String returnUrl,HttpServletResponse response) throws IOException {log.info("code: {}, returnUrl: {}", code, returnUrl);String redirectUrl = returnUrl.concat("?").concat(code);response.sendRedirect(redirectUrl);}
}

客户端发起网页授权请求

http://wx.open.vaiwan.com/wx/oauth2?appId=appId&redirectUrl=https://www.baidu.com

这样客户端想在哪个页面进行微信网页授权,就只要修改redirectUrl

其他方式

也可以通过写一个中间agent.html, 做一层代理转发,然后重定向回去,原理差不多

good luck !

解决微信网页授权多个域名(大于两个)相关推荐

  1. 网页授权域名需要加html,如何解决微信网页授权回调域名只能设置一个

    问题 在实际的需求中,我们常常遇到多个部署在不同域名下的业务,想使用同一个「微信服务号」进行微信网页授权.但是微信的网页授权只能设置一个回调地址.为了满足业务需求,有人想到给每个业务部门配置一个微信服 ...

  2. 微信遇到特殊服务器,解决微信网页授权,出现errcode:40163,errmsg:codebeenused,看似微信访问了2次这个回调接口的问题...

    先说说自己理解的微信机制: 微信内访问自己服务器的页面,如果访问出错,微信就会认为是微信自身的问题,那么他就会开启另外一个IP来访问这个页面(什么上海的IP,深圳的IP不等),再把访问结果发回用户端, ...

  3. 解决微信网页授权域名限制问题

    业务需求:合作方获取我方微信公众号openId,我方需要回调合作方的前端地址,但是域名只有两个,自己都不够用. 解决方案:申请一个二级域名作为代理,然后使用nginx服务器转发到其他地址. nginx ...

  4. 微信网页授权之回调域名

    前言: 测试号和服务号配置回调域名的步骤是不一样的. 测试号比较简单,直接填入域名即可.如图 服务号配置回调域名需要3步. 1. 填写域名 2. 下载指定的MP_verify_0OeEhSRiUSG2 ...

  5. php微信授权ajax,ajax 实现微信网页授权登录

    项目背景 因为项目采用前后端完全分离方案,所以,无法使用常规的微信授权登录作法,需要采用 ajax 实现微信授权登录. 需求分析 因为本人是一个PHPer ,所以,微信开发采用的是 EasyWeCha ...

  6. ajax 微信code获取_ajax 实现微信网页授权登录的方法

    项目背景 因为项目采用前后端完全分离方案,所以,无法使用常规的微信授权登录作法,需要采用 ajax 实现微信授权登录. 需求分析 因为本人是一个phper ,所以,微信开发采用的是 EasyWeCha ...

  7. java ajax 微信网页授权_ajax 实现微信网页授权登录的方法

    AJAX 的 ajax 实现微信网页授权登录的方法 项目背景 因为项目采用前后端完全分离方案,所以,无法使用常规的微信授权登录作法,需要采用 ajax 实现微信授权登录. 需求分析 因为本人是一个ph ...

  8. 当配置微信网页授权域名出现下载的文件不匹配的问题

    今天配置微信网页授权域名的时候出现了下载的验证文件内容不匹配的问题,一直以为是thinkphp框架的问题(估计是不怎么爱用thinkphp的原因吧),其实最后是ngnix的配置问题,发现nginx.c ...

  9. 解决vue路由hash模式下,微信网页授权问题

    解决vue路由hash模式下,微信网页授权问题 本人开发负责微信公众号端,菜单都是自定义菜单,然后每个菜单路径都是经过授权如:http://xxxx.com/ceshi/wechat/authoriz ...

  10. 微信公众号H5【微信网页授权快照页】复现情况,以及解决方法(详细,成功,forcePopup,forceSnapShot,is_snapshotuse)

    (上班时间写的!!,大哥们看完记得点赞) 1.官方回答(稀碎) 快照页将会默认对用户屏蔽网页授权弹窗,用户在快照页中仅可进行滑动浏览操作,其他交互将被限制,并提示用户 "该网页需获取个人信息 ...

最新文章

  1. Vm-Tools 安装指南
  2. BAT批量重命名文件擴展名
  3. 廖雪峰python学习笔记——函数式编程
  4. jvav的 全局变量 和 局部变量
  5. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
  6. 漫画:跑上百万次代码验证三门问题
  7. jquery 后代元素_在jQuery中查找元素的所有后代
  8. 教师计算机西沃培训心得,希沃电子白板学习心得体会
  9. 如何建立团队知识库管理系统,把分散信息有效整理?
  10. 参数方程绘制球面、椭球面、环面_OpenGL
  11. 系统设计之时间维度[数据仓库]
  12. 腾讯T3手把手教你!从底层开始带你了解并发编程,重要概念一网打尽!
  13. 【UOJ】UER#3.B 开学前的日历
  14. PDF怎么转换成PPT且可以修改里面的文字
  15. SQL 数据库 学习 011 关系、一对一、一对多、多对多
  16. 前端一班:HTML5当天学习总结-摘抄张果博客园
  17. ntp计算机系统时间总是跳,电脑时间老是自动跳的解决方法 电脑时间每小时自动校准方法的图文教程...
  18. 【RDMA】mellanox RDMA网卡驱动安装和查看状态
  19. 树莓派4安装homeassistant(官方系统Home Assistant OS)
  20. 如何解决WPS中文章段落格式设置失效

热门文章

  1. 程序员,技术主管和架构师
  2. 计算机主板电流图形,终于找到电脑主板供电电路介绍
  3. android蓝牙键盘光标,罗技K810背光蓝牙键盘快捷键大全
  4. Spurious Wakup
  5. 牛顿莱布尼茨计算机公式,牛顿莱布尼茨公式
  6. 淘宝开放平台深入浅出
  7. 装双系统win10和android,教你安装Win10和安卓Android双系统(不是模拟器)
  8. css标题样式_CSS的标题集样式
  9. c语言盆子接球游戏,适合幼儿园孩子的70个感统训练游戏(开发右脑)
  10. 如何使用图灵机器人实现自动回复?