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

目錄

1、註冊公衆號
2、啓用開發者
3、配置服務器配置
4、開發本身的需求
5、寫在最後

1、註冊公衆號

       具體的註冊過程,根據官方文檔一步一步來便可。這裏需注意的是訂閱號仍是服務號;有些比較好的開發接口訂閱號是沒有的,可是註冊服務號須要企業認證之類的,比較複雜。web

 

2、啓用開發者

       在公衆號後臺打開啓用便可。flask

 

3、配置服務器配置

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

 

一、配置服務器的四個參數

              
1)URL:請求到web服務器的地址
2)Token:任意填寫          
3)EncodingAESKey:隨機生成 
4)消息加解密方式:明文方式   
 
二、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 隨機數
 
三、後端服務器
 
後端服務器將經過檢驗signature對請求進行校驗,校驗方法以下:
 
1)獲取請求的四個參數signature、echostr、timestamp、nonce
2)對token(代碼裏指定)、timestamp參數、nonce參數進行字典排序
3)將三個參數字符串拼接成一個字符串並進行sha1加密
4)對加密後的字符串與請求獲取的signature對比,若是同樣,返回echostr,對接成功
 
四、代碼實現
 
from flask import Flask
from flask import request
import hashlib

app = Flask(__name__)

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

    # 一、 獲取攜帶的 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"

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

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

    # 四、對比獲取到的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)

 

5、寫在最後

在平凡中堅持前行,總有一天會碰見不同的本身。
 
寫博客記錄、思考、總結,趟過的坑不趟第二遍。
 

全部的文章,皆同步在公衆號「運維汪」,可關注;也可加入「不扯淡,專一於技術」的QQ羣:753512236 服務器

相關文章
相關標籤/搜索