python flask 微信_Flask+微信公众号开发(接入指南)

目录

一、注册公众号

二、启用开发者

三、配置服务器配置

四、开发自己的需求

五、写在最后

一、注册公众号

具体的注册过程,根据官方文档一步一步来即可。这里需注意的是订阅号还是服务号;有些比较好的开发接口订阅号是没有的,但是注册服务号需要企业认证之类的,比较复杂。

二、启用开发者

在公众号后台打开启用即可。

三、配置服务器配置

注:整个过程是动态的,是得先把后端的web和代码设置好,再来配置服务器配置,服务器配置的成功与否是会正儿八经的请求你填的这个URL去做校验的。刚开始的时候不太了解,以为只是填一下信息就行,一直token错误,最好的办法是边开发,边调试。

1、配置服务器的四个参数

1)URL:请求到web服务器的地址

2)Token:任意填写

3)EncodingAESKey:随机生成

4)消息加解密方式:明文方式

2、Web请求过去的四个参数

/?signature=xxx&echostr=xxx×tamp=xxx&nonce=xxx

1)signature 加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数;

signature 加密签名 = token(开发者)+ timestamp参数 + nonce参数

2)echostr 随机字符串

3)timestamp 时间戳

4)nonce 随机数

3、后端服务器

后端服务器将通过检验signature对请求进行校验,校验方法如下:

1)获取请求的四个参数signature、echostr、timestamp、nonce

2)对token(代码里指定)、timestamp参数、nonce参数进行字典排序

3)将三个参数字符串拼接成一个字符串并进行sha1加密

4)对加密后的字符串与请求获取的signature对比,如果一样,返回echostr,对接成功

4、代码实现

from flask importFlaskfrom flask importrequestimporthashlib

app= Flask(__name__)

@app.route('/wechat')defwechat():#1、 获取携带的 signature、timestamp、nonce、echostr

signature = request.args.get("signature", "")

timestamp= request.args.get("timestamp", "")

nonce= request.args.get("nonce", "")

echostr= request.args.get("echostr", "")print(signature, timestamp, nonce, echostr)

token="xxxxxxxxx"

#2、 进行字典排序

data =[token, timestamp, nonce]

data.sort()#3、三个参数拼接成一个字符串并进行sha1加密

temp = ''.join(data)

sha1= hashlib.sha1(temp.encode('utf-8'))

hashcode=sha1.hexdigest()print(hashcode)#4、对比获取到的signature与根据上面token生成的hashcode,如果一致,则返回echostr,对接成功

if hashcode ==signature:returnechostrelse:return "error"

if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000, debug=True)

五、写在最后

在平凡中坚持前行,总有一天会遇见不一样的自己。

写博客记录、思考、总结,趟过的坑不趟第二遍。

所有的文章,皆同步在公众号“运维汪”,可关注;也可加入“不扯淡,专注于技术”的QQ群:753512236

你可能感兴趣的:(python,flask,微信)