準備工作
- 一個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的基礎上開發更多的功能,玩玩微信公眾號的二次開發.