python token验证失败百分百解决_微信公众号token验证失败解决方案
我用的是python3+,而官网给的例子是python2的写法。问题就在python版本不同。
下面是截取官方的实例代码的一部分
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
map(sha1.update, list)
hashcode = sha1.hexdigest()
我就直接告诉你这一段错了。也是在我对比微信验证时发送的信息后才得出的结论。以下是在网上找到的加密原理,可以选择性看看。
当我们点击了提交后,微信服务器会向我们所填写的那个URL发起一个GET请求,并携带以下几个参数:timestamp, nonce, echostr, signature。
其中timestamp是一个时间戳,nonce是一个随机数,echostr也是随机数,这几个都很普通,重点在于signature,它的生成方式是将nonce、timestamp和token(也就是我们在网页中配置的TOKNE)三个字符串按照字典序排序后,对排序后得到的字符串数组使用哈希加密算法得到。
我们的服务器在收到这个GET请求后,提取对应的参数,并按照前面说的方式生成hashcode,如果这个值与参数中的signature相同,那么我们就将echostr返回给微信服务器,否则返回空值。
微信服务器收到这个echostr之后,验证这个值与它发送的echostr值是否相同,如果相同,说明这个值的确是由我们的服务器返回的,从而完成验证,今后所有的信息就都可以发送到这个服务器地址上。
这里面涉及到了一些安全认证的相关知识,有兴趣的朋友可以去查阅更详细的资料。总的来说,就是让通信的双方都能够确认对方的真实身份。
token验证失败的原因在于map函数。应该是python的2和3不一样吧。map函数第一个参数是一个函数,第二个参数是一个列表。作用是把第一个函数依次作用于列表中的每个元素。
这里我又学到了hashlib的一些东西。update是防止数据过大,所以可以用update依次添加要加密的数据。
所以综上可以看出,微信的加密就是现将list排序,然后依次将排序后的列表的每个元素用update合并成总的要加密的数据。贴一段代码帮助理解
import hashlib
sha1 = hashlib.sha1()
sha1.update('a'.encode('utf-8'))
sha1.update('b'.encode('utf-8'))
sha1.update('c'.encode('utf-8'))
等同于:
sha1.update('abc'.encode('utf-8'))
hashcode = sha1.hexdigest() #获取加密串
所以在python3下,加密的算法要改成如下
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
sha1.update(list[0].encode('utf-8'))
sha1.update(list[1].encode('utf-8'))
sha1.update(list[2].encode('utf-8'))
hashcode = sha1.hexdigest()
经过一通折腾,终于解决问题了。忍不住吐槽,python3都这么长时间了,为什么开发文档还不更新。而且还有好多程序都还是在python2下。唉,又是python一大诟病。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
python token验证失败百分百解决_微信公众号token验证失败解决方案相关推荐
- python token验证失败百分百解决_微信token验证失败的解决方法
一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...
- 公众号获取token失败_微信公众号token验证失败
我用的是python3+,而官网给的例子是python2的写法.问题就在python版本不同. 下面是截取官方的实例代码的一部分 list =[token, timestamp, nonce] lis ...
- nodejs+express解决微信公众号token验证失败
nodejs+express解决微信公众号token验证失败 问题描述 下面是服务端代码 问题原因 解决方案 重新运行服务器问题解决 结语 问题描述 这里是测试号的状态,如果是公众号的话上边应该显示t ...
- php 公众号 验证失败,微信公众号Token验证失败的几种情况及解决办法
微信公众号Token验证失败的几种情况及解决办法 1. 思路看验证的文件,编码是否是:utf-8 无bom头的 2. thinkphp框架,要关闭调试模式,开启调试模式容易有错误代码出现,导致验证失败 ...
- php开发微信公众号token验证失败,Thinkphp5 微信公众号token验证不成功的原因
微信是中国最流行的社交软件之一,随着微信生态系统的建立,很多人也致力于公众号 相关的文章">微信公众号和微信小程序的开发,那么Thinkphp5 微信公众号token验证不成功的原因及 ...
- php微信公众号测试号token配置失败,微信公众号Token配置失败解决办法
前言 今天生病在家,由于我的微信公众号被投诉了,因此影视站接口被迫关闭,于是就想着给大家分享 APP,于是就用了下微信的自动回复, 想着能否把这个自动回复对接到 MIPCMS 上,于是就开干.但是微信 ...
- Java微信公众号配置验证Token
Java微信公众号服务器配置-验证Token 一.填写服务器配置 首先我们需要在微信公众平台上填写服务器配置 重点内容 服务器地址URL(一定要外网能访问的到) 在我们提交配置的时候, ...
- 微信公众号TOKEN认证失败处理
微信公众号TOKEN认证失败处理 公众号基本配置 点击修改配置 后端代码 公众号基本配置 点击修改配置 填写校验url.token.encodingAESKey,选择消息加解密方式,点击提交. 具体配 ...
- “errcode“:40164,“errmsg“:“invalid ip ...微信公众号开发调用失败的解决办法
问题概述 关于这个问题,博主是在进行微信公众号平台开发的过程中遇到的, 微信公众号平台的前后端代码开发完成后,在联调接口调用: " https://api.weixin.qq.com/cgi ...
- python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
最新文章
- 芯片IP,SOC,FPGA智能卡
- 数据结构与算法之选择排序
- 跟我一起学Redis之Redis持久化必知必会
- ❤️一分钟学会MySQL数据库的使用❤️
- 最新小额借贷系统完整源码+附教程文档
- 中国移动短信中心服务中心号码一览表
- android generated java files,Android protobuf-javalite 实践
- macOS SwiftUI 进度指示器组件规范之 02 确定进度指标 Determinate Progress Indicators
- AH8652,AH8100,非隔离5V,供电替代阻容降压方案
- 学习笔记——VLSI测试方法学和可测性设计
- 计算机视觉应用之(四) -眼球跟踪
- 概率统计笔记:共轭分布
- 校招c语言笔试题数组,华为校园招聘考试C语言C笔试题
- perl 常用模块使用例子
- mac系统-安装虚拟无人机px4及其简单操作教程
- java 影院售票系统_java电影院售票系统
- 用Java调用中国网建提供的SMS短信平台接口实现向移动端发送短信
- 40 岁的中年失业人怎么活下去?
- 超声加工技术的研究现状及其发展趋势
- 流体力学深度学习建模技术研究进展