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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM