热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

解决微信公众号网页授权域名2个的限制

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

问题

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


思路

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


流程图

 

 

 

 

 


代码实现

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.MessageFormat;
@RestController
@RequestMapping(
"/h5")
public class WechatAgentController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 微信网页授权地址, 需要人工点击确认的那种
*/
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 = "https://xxxx.com";
private static final String CODE_URL = "retail/h5/wx/code?returnUrl={0}";
/**
* 授权
*
*
@param redirectUrl 目标地址--授权完成之后的回调地址
*/
@NoToken
@GetMapping(
"/wx/oauth2")
public void openAuth(String appId, String redirectUrl,
HttpServletResponse response)
throws IOException {
String middleUrl
= DEFAULT_AUTH_HOST;
middleUrl
= middleUrl.concat("/");
middleUrl
= middleUrl.concat(CODE_URL);
String tmpUrl
= MessageFormat.format(middleUrl, redirectUrl);
logger.warn(
"tmpUrl"+tmpUrl);
System.out.println(tmpUrl);
String realRedirectUrl
= MessageFormat.format(AUTH_URL, appId, tmpUrl);
logger.warn(
"realRedirectUrl:"+realRedirectUrl);
System.out.println(realRedirectUrl);
//重定向到 /wx/code 请求
response.sendRedirect(realRedirectUrl);
}
/**
* 获取 code
*/
@NoToken
@GetMapping(
"/wx/code")
public void code(String code, String returnUrl,
HttpServletResponse response)
throws IOException {
String redirectUrl;
if (returnUrl.contains("?")) {
redirectUrl
= returnUrl.concat("&code=").concat(code);
}
else {
redirectUrl
= returnUrl.concat("?code=").concat(code);
}
logger.warn(
"redirectUrl:"+redirectUrl);
response.sendRedirect(redirectUrl);
}
/**
* 在微信公众号后台配置域名可跳过文件验证
*/
@GetMapping(
"/MP_verifxxxxxxxxxxxx.txt")
public String txt() {
return "xxxxxxxxxx";
}
}

 

hello world!!!



推荐阅读
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 本文讨论了同事工资打听的话题,包括同工不同酬现象、打探工资的途径、为什么打听别人的工资、职业的本质、商业价值与工资的关系,以及如何面对同事工资比自己高的情况和凸显自己的商业价值。故事中的阿巧发现同事的工资比自己高后感到不满,通过与老公、闺蜜交流和搜索相关关键词来寻求解决办法。 ... [详细]
  • jmeter实践:从csv中获取带引号的数据详情的技巧和运行全部数据的方法
    本文分享了jmeter实践中从csv中获取带引号的数据的解决办法,包括设置CSV Data Set Config和运行脚本获取数据的方法。另外还介绍了循环运行csv中全部数据的解决方法,避免每次修改csv用例都需要修改脚本的麻烦。通过了解和掌握工具的细节点,可以更好地解决问题和提高技术水平。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 仙贝旅行是日本最大的旅游服务平台之一,为广大用户提供优质的日本定制游服务。随着用户数量的增长,仙贝旅行决定与智齿科技合作,全面替换原有客服系统,打造全新的在线客服体系。该体系具备多渠道快速接入的能力,让仙贝旅行轻松与各个渠道的接入用户完成沟通。同时,机器人与人工协同发力,提升客户服务水平。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 智能消息服务数字短信使用FAQ
    本文介绍了智能消息服务数字短信的开通流程和操作步骤,包括开通数字短信的路径、申请流程、控制台操作以及API接口对接模式。同时还介绍了数字短信模板的创建规则和要求,包括审核状态的说明和建议。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 微信开放外链的第二阶段:腾讯和阿里巴巴的博弈
    2021年11月30日,微信开始进行“开放外链”的第二阶段,允许在微信个人会话中打开外部链接和在微信群中打开电商链接。虽然这是腾讯和阿里巴巴都能接受的阶段性结果,但双方都不会太满意。接下来几个月,腾讯和阿里将展开复杂的博弈,我们作为外人很难看清全过程。工信部从未要求腾讯无条件开放微信API,本次开放的也只是普通的HTTP链接。 ... [详细]
  • 小程序获取用户信息按钮返回中文地址
    1.我是根据官方文档中描述去写的按钮 可以看到button中加了zh_CNopen-typegetUserInfobindgetuserinfogetU ... [详细]
  • 微信朋友圈屏蔽设置教程,轻松屏蔽无关信息
    自从微信朋友圈越来越受欢迎,很多人想知道如何屏蔽一些不想看的朋友圈信息。本文提供了屏蔽设置教程,通过点击「我」-「相册」-「…」选项 -「消息列表」,左滑即可选择「不再通知」和「删除」某条朋友圈评论或点赞。想重新接收信息时,只需左滑即可。通过这些简单操作,您可以轻松屏蔽无关信息。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
author-avatar
mobiledu2502857823
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有