溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

flask實(shí)現(xiàn)公眾號(hào)開發(fā)的方法

發(fā)布時(shí)間:2020-09-01 16:17:32 來源:億速云 閱讀:180 作者:小新 欄目:編程語言

這篇文章主要介紹了flask實(shí)現(xiàn)公眾號(hào)開發(fā)的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

Flask開發(fā)微信公眾號(hào)

既然要寫微信公眾號(hào)后臺(tái),首先肯定是要先有一個(gè)微信公眾號(hào),這個(gè)申請(qǐng)很簡單,在此就不多說了,不會(huì)的可以去百度。

一、接入微信公眾號(hào)

主要步驟是根據(jù)微信公眾平臺(tái)開發(fā)文檔來的

開發(fā)文檔提供的接入步驟為:

填寫服務(wù)器配置

驗(yàn)證服務(wù)器地址的有效性

依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯

1、填寫服務(wù)器配置

登錄微信公眾平臺(tái)官網(wǎng)后,在公眾平臺(tái)官網(wǎng)的開發(fā)-基本設(shè)置頁面,勾選協(xié)議成為開發(fā)者,點(diǎn)擊“修改配置”按鈕,填寫服務(wù)器地址(URL)、Token和EncodingAESKey,其中URL是開發(fā)者用來接收微信消息和事件的接口URL。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會(huì)和接口URL中包含的Token進(jìn)行比對(duì),從而驗(yàn)證安全性)。EncodingAESKey由開發(fā)者手動(dòng)填寫或隨機(jī)生成,將用作消息體加解密密鑰。其中的URL是你的服務(wù)器地址,在這兒我是用我的網(wǎng)站,Token自己隨便填寫,后面會(huì)用到,EncodingAESKey可以自己寫也可以隨機(jī)生成,一般隨機(jī)生成就行了。先不點(diǎn)提交,因?yàn)槲覀冞€沒有寫驗(yàn)證程序,后面寫完后再點(diǎn)擊。

2、驗(yàn)證服務(wù)器地址的有效性

這是文檔的說明,我們主要就按照寫個(gè)步驟來編寫驗(yàn)證代碼

首先用Flask寫出基本框架,因?yàn)楸容^簡單,這兒就用單文件

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route("/")
def index():
    pass

if __name__ == "__main__":
    app.run()

這是一個(gè)最基本的Flask程序,根據(jù)文檔說明,開發(fā)者提交請(qǐng)求后會(huì)發(fā)送一個(gè)GET請(qǐng)求到URL,GET請(qǐng)求攜帶了四個(gè)參數(shù),我們首先獲得這四個(gè)參數(shù):

from flask import Flask
from flask import request
import hashlib

app = Flask(__name__)

@app.route("/weixin/",methods=["GET","POST"])
def index():
    if request.method == "GET":       # 判斷請(qǐng)求方式是GET請(qǐng)求
        my_signature = request.args.get('signature')     # 獲取攜帶的signature參數(shù)
        my_timestamp = request.args.get('timestamp')     # 獲取攜帶的timestamp參數(shù)
        my_nonce = request.args.get('nonce')        # 獲取攜帶的nonce參數(shù)
        my_echostr = request.args.get('echostr')         # 獲取攜帶的echostr參數(shù)

        token = 'hahaha'     # 一定要跟剛剛填寫的token一致

        # 進(jìn)行字典排序
        data = [token,my_timestamp ,my_nonce ]
        data.sort()
        
        # 拼接成字符串
        temp = ''.join(data)

        # 進(jìn)行sha1加密
        mysignature = hashlib.sha1(temp).hexdigest()
        
        # 加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來源于微信
        if my_signature == mysignature:
            return my_echostr 

if __name__ == "__main__":
    app.run()

根據(jù)開發(fā)文檔,所有的驗(yàn)證代碼就寫完啦,現(xiàn)在可以去微信公眾號(hào)后臺(tái)點(diǎn)擊提交,如果沒問題的話就會(huì)顯示成功。也可能會(huì)提示“請(qǐng)求url超時(shí)”或“token驗(yàn)證失敗”,前者再次提交就行,后者可能是你的程序有問題,如果程序沒問題,可以試著換一下token。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享flask實(shí)現(xiàn)公眾號(hào)開發(fā)的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI