关于公众号开发者<入门指引>中1.4节<开发者基本配置>中示例代码问题反馈
你好, 在官方入门指引中的示例代码中1.4节<开发者基本配置>的代码, 关于公众号和服务器之间认证有两个问题向您反馈:
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 = "xxxx" #请按照公众平台官网\基本配置中信息填写 list = [token, timestamp, nonce] list .sort() sha1 = hashlib.sha1() map (sha1.update, list ) hashcode = sha1.hexdigest() print "handle/GET func: hashcode, signature: " , hashcode, signature if hashcode = = signature: return echostr else : return "" except Exception, Argument: return Argument |
第一个, 在python3.7中测试发现, hashlib.sha1对象的update方法只能接收encode后的字节码, 不可以直接接收string, 所以列表中的’token’, ‘timestamp’, 'nonce’需要encode才可以在python3中运行.
第二个, 在python3.7中测试, 内建函数map与python2不同, 它返回的是一个迭代对象, 所以仅仅map
(sha1.update,
list
) 这一个语句, sha1.update并不会真正执行, 需要对map返回的可迭代对象进行一定的操作, 才可以激发hash的计算.
以上反馈只针对python3.x的较新版本, 不过python的更新是大势所趋, 希望官方能采纳, 以免像我一样的小白走弯路.