官网提供代码适用于python2.7+版本。
当你用python3+版本运行,验证token肯定失败。
需要修改handle.py源代码,才可以。
# -*- coding: utf-8 -*- # filename: 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" signature = data.signature timestamp = data.timestamp nonce = data.nonce echostr = data.echostr token = "12345678"
# 以下5行是官网提供适用于 python 2.7+ 版本的代码 #list = [token, timestamp, nonce] #list.sort() #sha1 = hashlib.sha1() #map(sha1.update, list) #hashcode = sha1.hexdigest()
# 以下7行是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() print("handle/GET func: hashcode, signature: ", hashcode, signature) if hashcode == signature: return echostr else: return "" except (Exception, Argument): return Argument
原文:https://www.cnblogs.com/maoyan/p/14684395.html