微信公众号 Token验证失效 问题
发表时间:2020-10-17
发布人:葵宇科技
浏览次数:85
最近在学习微信公众号的时候遇到了一个问题:Token验证失效
话不多说,看代码:handle.py
import hashlib
import web
class Handle(object):
def GET(self):
try:
data = web.input()
if len(data) == 0:
return "hello, this is handle view"
# 微信服务器获取到的数据
# 生成方式是将nonce、timestamp和token(也就是我们在网页中配置的TOKNE)
# 三个字符串按照字典序排序后,对排序后得到的字符串数组使用哈希加密算法得到。
signature = data.signature
# 时间戳
timestamp = data.timestamp
# 随机数
nonce = data.nonce
# 随机数,我们将所得到的参数,按前面的方式生成生成hashcode,将其与signature进行比对,
# 若相等返回echostr,否则返回空
echostr = data.echostr
token = "xxxx" # 请按照公众平台官网\基本配置中信息填写
list = [token, timestamp, nonce]
# 按字典顺序排序
list.sort()
# 哈希算法加密list得到hashcode
sha1 = hashlib.sha1()
# 注释掉
# map(sha1.update, list)
# 新增代码
sha1.update(list[0].encode('utf-8'))
sha1.update(list[1].encode('utf-8'))
sha1.update(list[2].encode('utf-8'))
hashcode = sha1.hexdigest()
print("handle/GET func: hashcode, signature: ", hashcode, signature)
# 验证是否相等
if hashcode == signature:
return echostr
else:
return ""
except Exception as Argument:
return Argument
官网用的是python2.7,我本地装的是python3。自己也忽视了map()函数的不同,搞了半天也没找到错误在哪里,后来晚上看到这篇文章,终于解决了。
在此记录一下,希望对你们有所帮助。