Flask+微信公眾號開發(接入指南)
目錄
一、註冊公眾號
二、啟用開發者
三、配置伺服器配置
四、開發自己的需求
五、寫在最後
一、註冊公眾號
具體的註冊過程,根據官方文檔一步一步來即可。這裡需注意的是訂閱號還是服務號;有些比較好的開發介面訂閱號是沒有的,但是註冊服務號需要企業認證之類的,比較複雜。
二、啟用開發者
在公眾號後台打開啟用即可。
三、配置伺服器配置
註:整個過程是動態的,是得先把後端的web和程式碼設置好,再來配置伺服器配置,伺服器配置的成功與否是會正兒八經的請求你填的這個URL去做校驗的。剛開始的時候不太了解,以為只是填一下資訊就行,一直token錯誤,最好的辦法是邊開發,邊調試。
1、配置伺服器的四個參數
1)URL:請求到web伺服器的地址
2)Token:任意填寫
3)EncodingAESKey:隨機生成
4)消息加解密方式:明文方式
2、Web請求過去的四個參數
/?signature=xxx&echostr=xxx×tamp=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