Sanic 微信公众号开发 --- 初探
  • Sanic的一个Demo(like Flask)
  • 第一个稍微正式点的Demo用来开发微信公众号

准备工作

  • 一个linux系统或者一个mac电脑(因为Sanic不兼容Windows)
  • 一个服务器(云服务器就可以了,如果是在内网的很麻烦,而且不推荐那么折腾)
  • Python3.5以上(之前版本都不支持)
  • 一个公众号(个人或者企业都可以)

项目环境

  • Ubuntu 17.10 (建议用16.01或者14.04的,因为太新了gcc和g++安装部分要往下降级比较麻烦)
  • Python 3.5.5 (用了3.5最新的版本)
  • 编译器Pycharm最新版本

项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
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的方法

微信公众号开发的答疑区

大致申请公众号流程以及开发前的准备:

  1. 申请一个公众号(初学者用个人帐号)
  2. Sanic如果没有用gunicorn或者nginx做代理,那么请在启动时使用80端口(原因很简单,微信那边只认80端口)
  3. 准备好一个公网的服务器或者云服务器(我用阿里云的,开放80端口)
  4. 先写好一个get方法去返回验证token结果(代码如下)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 ""
  1. 公众号管理界面验证成功后点启用就ok了.接下来就是开发的过程了.
  2. 具体开发有什么权限的请研读接口权限(需要在登录平台后才能看)、微信公众平台技术文档
  3. 以上弄完就可以认真开发调试了.

小谈

  • 我一直关注Sanic很久了,最近才有时间静下来认真看Sanic(如果之前有学习过Flask或者Flask-restful就很容易上手).
  • Django的同学就可以要花点时间去适应下Sanic的写法
  • Sanic大概花了一天的时间去看文档,然后开发这个demo只用了一个下午(demo代码就不多, so easy)
  • 之后自己会在demo的基础上开发更多的功能,玩玩微信公众号的二次开发.
文章作者: sunhailin-Leo
文章链接: http://www.leoyuki.xyz/2018/02/06/Sanic_wx_dev_demo/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明来自 LeoBlog