Flask+微信公眾號開發(接入指南)

目錄

一、註冊公眾號
二、啟用開發者
三、配置伺服器配置
四、開發自己的需求
五、寫在最後

一、註冊公眾號

       具體的註冊過程,根據官方文檔一步一步來即可。這裡需注意的是訂閱號還是服務號;有些比較好的開發介面訂閱號是沒有的,但是註冊服務號需要企業認證之類的,比較複雜。

 

二、啟用開發者

       在公眾號後台打開啟用即可。

 

三、配置伺服器配置

註:整個過程是動態的,是得先把後端的web和程式碼設置好,再來配置伺服器配置,伺服器配置的成功與否是會正兒八經的請求你填的這個URL去做校驗的。剛開始的時候不太了解,以為只是填一下資訊就行,一直token錯誤,最好的辦法是邊開發,邊調試。

 

1、配置伺服器的四個參數

              
1)URL:請求到web伺服器的地址
2)Token:任意填寫          
3)EncodingAESKey:隨機生成 
4)消息加解密方式:明文方式   
 
2、Web請求過去的四個參數
 
/?signature=xxx&echostr=xxx&timestamp=xxx&nonce=xxx
 
1)signature 加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數;
      signature 加密簽名 = token(開發者)+ timestamp參數 + nonce參數
2)echostr 隨機字元串
3)timestamp 時間戳
4)nonce 隨機數
 
3、後端伺服器
 
後端伺服器將通過檢驗signature對請求進行校驗,校驗方法如下:
 
1)獲取請求的四個參數signature、echostr、timestamp、nonce
2)對token(程式碼里指定)、timestamp參數、nonce參數進行字典排序
3)將三個參數字元串拼接成一個字元串並進行sha1加密
4)對加密後的字元串與請求獲取的signature對比,如果一樣,返回echostr,對接成功
 
4、程式碼實現
 
from flask import Flask
from flask import request
import hashlib

app = Flask(__name__)

@app.route('/wechat')
def wechat():

    # 1、 獲取攜帶的 signature、timestamp、nonce、echostr
    signature = request.args.get("signature", "")
    timestamp = request.args.get("timestamp", "")
    nonce = request.args.get("nonce", "")
    echostr = request.args.get("echostr", "")
    print(signature, timestamp, nonce, echostr)

    token="xxxxxxxxx"

    # 2、 進行字典排序
    data = [token, timestamp, nonce]
    data.sort()

    # 3、三個參數拼接成一個字元串並進行sha1加密
    temp = ''.join(data)
    sha1 = hashlib.sha1(temp.encode('utf-8'))
    hashcode = sha1.hexdigest()
    print(hashcode)

    # 4、對比獲取到的signature與根據上面token生成的hashcode,如果一致,則返回echostr,對接成功
    if hashcode == signature:
        return echostr
    else:
        return "error"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

 

五、寫在最後

在平凡中堅持前行,總有一天會遇見不一樣的自己。
 
寫部落格記錄、思考、總結,趟過的坑不趟第二遍。
 

所有的文章,皆同步在公眾號「運維汪」,可關注;也可加入「不扯淡,專註於技術」的QQ群:753512236

 

Tags: