微信公众号 Token验证失效 问题 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 公众号相关 >

微信公众号 Token验证失效 问题

发表时间:2020-10-17

发布人:葵宇科技

浏览次数:50

最近在学习微信公众号的时候遇到了一个问题: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()函数的不同,搞了半天也没找到错误在哪里,后来晚上看到这篇文章,终于解决了。
在此记录一下,希望对你们有所帮助。

相关案例查看更多