微信公众平台安全模式URL签名验证
在记录之前先先吐槽一下公众平台的文档和demo吧,腾讯这么大个公司写的文档还是认真点嘛,对新手是真的不友好,里面的坑太多了。
1、首先是配置服务器的坑
文档上说开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,然后将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
示例代码就已经跟文档描述不符了,有些php代码的$不见了,然后排序也是只有两个参数进行排序,这样写不是误导别人嘛。
然后下载他的demo,我因为用的java进行开发,所以这里只说java的demo。
如图所示,demo上的sha1加密是传的四个参数进行加密。然后问题来了,文档示例写的是用两个参数,文档写的是用三个参数,demo写的是用四个参数,那么到底是用几个参数呢??(辣么大个公司做个东西就不能严谨点么)
经过试验,把getSHA1这个方法重载一下,把encrypt这个参数去掉重新再写个三个参数的方法进行排序加密就能完成URL验证了。(注意不要把直接把getSHA1这个方法改了,复制一下重新写一个方法,以后有个坑还会用到这个)。
2、然后第二个坑来了
验证完URL,服务器配置完毕过后该对公众号进行对接了吧?下面还有个坑等着你呢。因为选了安全模式就是为了服务器能更安全嘛,所以对接口获取的消息来源也得验证一下吧?但是呢!这里的验证跟配服务器时的验证是不一样的,这里用的是四个参数!(就是上面那个getSHA1那四个),公众平台的文档压根就没写安全模式的签名怎么验证,一般人都会以为跟配置服务器的验证一样,我也在这困了大半天之后发现了微信另外一个文档!
微信开放平台里面的开发资源文档,里面详细记录了安全模式加解密的过程。没想到一个平台的功能还得去另外一个平台看文档,我服气的好吧,不知道有多少人被这坑过。
微信开放平台文档链接
再如上图所示,这里表明了事件推送的验证签名是需要四个参数的。
直接用这个方法就行了,我开始配置服务器时没看懂这个方法,以为微信写错了,没想到是demo调用错了,明明是事件推送的加密方法,验证URL调用这个方法干嘛???
行了,吐槽就到这,微信开放平台上的文档写得很清楚,其他的我就不说了。其实这些问题的根源就在于公众平台的文档描述不清楚,直接写清楚配置安全模式要去看另外一个文档不行吗。就不会费这么多事。
微信公众平台安全模式URL签名验证相关推荐
- 微信公众平台配置——URL、Token和JS安全域名
无论是正式的微信公众号还是测试账号,都需要配置URL和Token,用于验证服务器是否配置正确,如下图. 图中的URL除了包括协议.域名,还需要具体的接口路径,比如这里就是"/wx/enter ...
- 微信php签名验证_微信公众平台安全模式消息体签名及加解密PHP代码示例
从微信官网下载示例代码,把下面代码覆盖demo.php即可,如有疑惑欢迎私密. /* 椰子园 http://www.yeziyuan.com email coconutgarden@sina.com ...
- 微信公众平台安全模式消息体签名及加解密PHP代码示例
从微信官网下载示例代码,把下面代码覆盖demo.php即可,如有疑惑欢迎私密. <?php /*椰子园 http://www.yeziyuan.comemail coconutgarden@si ...
- 微信公众平台PHP开发
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -&g ...
- 公众平台 php,微信公众平台PHP开发(转载)
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据 ...
- 公众平台 php,微信公众平台PHP开发
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据 ...
- 基于php的微信公众平台开发入门实例
作者:zbtree 这篇文章主要介绍了基于php的微信公众平台开发入门,实例分析了微信公众平台从注册.配置方法及接口代码的实现技巧,深入浅出.希望可以帮助大家快速入门. CSDN学院开设了系列直播&l ...
- 微信公众平台开发过程
今天来分享一下开发经验,大家可以看看效果,哈哈 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并 ...
- 微信公众平台PHP开发(转载)
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -&g ...
最新文章
- 使用intellij idea制作可执行jar文件
- python多久更新一次_Python Tkinter,每秒钟更新一次
- MySQL(七)关于MySQL不同版本下临键锁锁定范围不同
- 事务流程java怎么实现_使用队列和事务实现采集数据实例流程
- [ZZ] 使用rsync来实现快速删除大量文件
- MySQL 读写分离 使用驱动com.mysql.jdbc.ReplicationDriver
- Ubuntu server中静态IP配置
- UIActionSheet的最后一项点击失效
- 【easy!】LeetCode 14. Longest Common Prefix
- Docker网络解决方案-Weave部署记录
- Gstreamer加载插件原理(二十五)
- 电脑硬件知识大扫盲:主板知识大全
- 使用插件导入Excel表到数据库
- JavaScript基础教程之flag的用法
- FPGA学习: Verilog刷题记录(16)
- 【7】OPencv骨架细化算法
- ESP32-CAM MicroPython配新板出现的PSRAM问题
- 初读《设计模式之禅》
- ApplePay对接java后台详细代码
- linux安全(1)