准备工作
- 一个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 hashlib
def 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的基础上开发更多的功能,玩玩微信公众号的二次开发.