Flask+微信公众号开发(接入指南)

目录

1、注册公众号
2、启用开发者
3、配置服务器配置
4、开发本身的需求
5、写在最后

1、注册公众号

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

 

2、启用开发者

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

 

3、配置服务器配置

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

 

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

              
1)URL:请求到web服务器的地址
2)Token:任意填写          
3)EncodingAESKey:随机生成 
4)消息加解密方式:明文方式   
 
二、Web请求过去的四个参数
 
/?signature=xxx&echostr=xxx&timestamp=xxx&nonce=xxx
 
1)signature 加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数;
      signature 加密签名 = token(开发者)+ timestamp参数 + nonce参数
2)echostr 随机字符串
3)timestamp 时间戳
4)nonce 随机数
 
三、后端服务器
 
后端服务器将经过检验signature对请求进行校验,校验方法以下:
 
1)获取请求的四个参数signature、echostr、timestamp、nonce
2)对token(代码里指定)、timestamp参数、nonce参数进行字典排序
3)将三个参数字符串拼接成一个字符串并进行sha1加密
4)对加密后的字符串与请求获取的signature对比,若是同样,返回echostr,对接成功
 
四、代码实现
 
from flask import Flask
from flask import request
import hashlib

app = Flask(__name__)

@app.route('/wechat')
def wechat():

    # 一、 获取携带的 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"

    # 二、 进行字典排序
    data = [token, timestamp, nonce]
    data.sort()

    # 三、三个参数拼接成一个字符串并进行sha1加密
    temp = ''.join(data)
    sha1 = hashlib.sha1(temp.encode('utf-8'))
    hashcode = sha1.hexdigest()
    print(hashcode)

    # 四、对比获取到的signature与根据上面token生成的hashcode,若是一致,则返回echostr,对接成功
    if hashcode == signature:
        return echostr
    else:
        return "error"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

 

5、写在最后

在平凡中坚持前行,总有一天会碰见不同的本身。
 
写博客记录、思考、总结,趟过的坑不趟第二遍。
 

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

相关文章
相关标签/搜索