Sanic 微信公眾號開發 --- 初探

NullSpider發表於2018-02-06

準備工作

  • 一個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的方法

微信公眾號開發的答疑區

大致申請公眾號流程以及開發前的準備:

  1. 申請一個公眾號(初學者用個人帳號)
  2. Sanic如果沒有用gunicorn或者nginx做代理,那麼請在啟動時使用80埠(原因很簡單,微信那邊只認80埠)
  3. 準備好一個公網的伺服器或者雲伺服器(我用阿里雲的,開放80埠)
  4. 先寫好一個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 ""
複製程式碼
  1. 公眾號管理介面驗證成功後點啟用就ok了.接下來就是開發的過程了.
  2. 具體開發有什麼許可權的請研讀介面許可權(需要在登入平臺後才能看)、微信公眾平臺技術文件
  3. 以上弄完就可以認真開發除錯了.

小談

  • 我一直關注Sanic很久了,最近才有時間靜下來認真看Sanic(如果之前有學習過Flask或者Flask-restful就很容易上手).
  • Django的同學就可以要花點時間去適應下Sanic的寫法
  • Sanic大概花了一天的時間去看文件,然後開發這個demo只用了一個下午(demo程式碼就不多, so easy)
  • 之後自己會在demo的基礎上開發更多的功能,玩玩微信公眾號的二次開發.

相關文章