准备工作
- 一个linux系统或者一个mac电脑(因为Sanic不兼容Windows)
- 一个服务器(云服务器就可以了,如果是在内网的很麻烦,而且不推荐那么折腾)
- Python3.5以上(之前版本都不支持)
- 一个公众号(个人或者企业都可以)
项目环境
- Ubuntu 17.10 (建议用16.01或者14.04的,因为太新了gcc和g++安装部分要往下降级比较麻烦)
- Python 3.5.5 (用了3.5最新的版本)
- 编译器Pycharm最新版本
项目结构
sanic_wx_project/|-- controller/| |-- __init__.py| |-- wx_controller.py||-- utils/| |-- __init__.py| |-- reply_center.py| |-- validate_wx_get.py||-- README|-- requirements.txt|-- wx_backend.py复制代码
- controller -- 蓝图的实现方法
- utils -- reply_center是回复中心, validate_wx_get是返回微信那边的GET请求,在初次校验token的时候需要使用
- wx_backend -- 启动Sanic的方法
微信公众号开发的答疑区
大致申请公众号流程以及开发前的准备:
- 申请一个公众号(初学者用个人帐号)
- Sanic如果没有用gunicorn或者nginx做代理,那么请在启动时使用80端口(原因很简单,微信那边只认80端口)
- 准备好一个公网的服务器或者云服务器(我用阿里云的,开放80端口)
- 先写好一个get方法去返回验证token结果(代码如下)
import hashlibdef validate(request): """ 校验token :param request: 请求 :return: str """ # 这里改写你在微信公众平台里输入的token token = 'token' # 获取输入参数 data = request.args signature = data.get('signature', '') timestamp = data.get('timestamp', '') nonce = data.get('nonce', '') echostr = data.get('echostr', '') # 字典排序 list_1 = [token, timestamp, nonce] list_1.sort() s = list_1[0] + list_1[1] + list_1[2] # sha1加密算法 code = hashlib.sha1(s.encode('utf-8')).hexdigest() # 如果是来自微信的请求,则回复echostr if code == signature: return echostr else: return ""复制代码
- 公众号管理界面验证成功后点启用就ok了.接下来就是开发的过程了.
- 具体开发有什么权限的请研读接口权限(需要在登录平台后才能看)、
- 以上弄完就可以认真开发调试了.
小谈
- 我一直关注Sanic很久了,最近才有时间静下来认真看Sanic(如果之前有学习过Flask或者Flask-restful就很容易上手).
- Django的同学就可以要花点时间去适应下Sanic的写法
- Sanic大概花了一天的时间去看文档,然后开发这个demo只用了一个下午(demo代码就不多, so easy)
- 之后自己会在demo的基础上开发更多的功能,玩玩微信公众号的二次开发.