成功解决官网提供代码适用于python2.7+版本。当用python3+版本运行,验证token失败。
需要修改handle.py源代码。
# -*- coding: utf-8 -*-# filename: handle.pyimport hashlibimport webclass Handle(object):def GET(self):try:data = web.input()if len(data) == 0:return "hello, this is handle view"signature = data.signaturetimestamp = data.timestampnonce = data.nonceechostr = data.echostrtoken = "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 echostrelse:return ""except (Exception, Argument):return Argument