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

最近學(xué)了一下Flask滨彻,看見知乎里有人用web.py來(lái)寫微信公眾號(hào)后臺(tái)前塔,所以我也正好用Flask來(lái)嘗試一下,就當(dāng)做是練練手式廷。功能很簡(jiǎn)單咐扭,就是實(shí)現(xiàn)一個(gè)自動(dòng)回復(fù)機(jī)器人,當(dāng)然是調(diào)用的圖靈機(jī)器人接口滑废。相當(dāng)基礎(chǔ)的啦蝗肪!

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

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

主要步驟是根據(jù)微信公眾平臺(tái)開發(fā)文檔來(lái)的,需要看文檔的請(qǐng)點(diǎn)擊開發(fā)文檔

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

  • 填寫服務(wù)器配置
  • 驗(yàn)證服務(wù)器地址的有效性
  • 依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯

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

登錄微信公眾平臺(tái)官網(wǎng)后,在公眾平臺(tái)官網(wǎng)的開發(fā)-基本設(shè)置頁(yè)面瓢对,勾選協(xié)議成為開發(fā)者寿酌,點(diǎn)擊“修改配置”按鈕,填寫服務(wù)器地址(URL)硕蛹、Token和EncodingAESKey醇疼,其中URL是開發(fā)者用來(lái)接收微信消息和事件的接口URL硕并。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會(huì)和接口URL中包含的Token進(jìn)行比對(duì)秧荆,從而驗(yàn)證安全性)倔毙。EncodingAESKey由開發(fā)者手動(dòng)填寫或隨機(jī)生成,將用作消息體加解密密鑰乙濒。

這是開發(fā)文檔的描述陕赃,說(shuō)得比較詳細(xì)

基本配置
服務(wù)器配置

其中的URL是你的服務(wù)器地址,在這兒我是用我的網(wǎng)站颁股,Token自己隨便填寫么库,后面會(huì)用到,EncodingAESKey可以自己寫也可以隨機(jī)生成甘有,一般隨機(jī)生成就行了诉儒。先不點(diǎn)提交,因?yàn)槲覀冞€沒(méi)有寫驗(yàn)證程序亏掀,后面寫完后再點(diǎn)擊忱反。

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

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


文檔說(shuō)明

首先用Flask寫出基本框架缭受,因?yàn)楸容^簡(jiǎ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ù)文檔說(shuō)明米者,開發(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)求來(lái)源于微信
        if my_signature == mysignature:
            return my_echostr 

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

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

驗(yàn)證成功后牙言,我們接下來(lái)就可以編寫后臺(tái)邏輯代碼了酸钦,我們下次主要是調(diào)用圖靈機(jī)器人接口實(shí)現(xiàn)自動(dòng)回復(fù),下次繼續(xù)說(shuō)咱枉。首先看看效果:

效果

想要體驗(yàn)一下的也可以搜索公眾號(hào)gh_acc899230a63

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卑硫,一起剝皮案震驚了整個(gè)濱河市徒恋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欢伏,老刑警劉巖入挣,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異硝拧,居然都是意外死亡径筏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門河爹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匠璧,“玉大人,你說(shuō)我怎么就攤上這事咸这∫幕校” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵媳维,是天一觀的道長(zhǎng)酿雪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)侄刽,這世上最難降的妖魔是什么指黎? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮州丹,結(jié)果婚禮上醋安,老公的妹妹穿的比我還像新娘。我一直安慰自己墓毒,他們只是感情好吓揪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著所计,像睡著了一般柠辞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上主胧,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天叭首,我揣著相機(jī)與錄音,去河邊找鬼踪栋。 笑死焙格,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的己英。 我是一名探鬼主播间螟,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼损肛!你這毒婦竟也來(lái)了厢破?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤治拿,失蹤者是張志新(化名)和其女友劉穎摩泪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劫谅,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡见坑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捏检。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荞驴。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贯城,靈堂內(nèi)的尸體忽然破棺而出熊楼,到底是詐尸還是另有隱情,我是刑警寧澤能犯,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布鲫骗,位于F島的核電站,受9級(jí)特大地震影響踩晶,放射性物質(zhì)發(fā)生泄漏执泰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一渡蜻、第九天 我趴在偏房一處隱蔽的房頂上張望术吝。 院中可真熱鬧,春花似錦茸苇、人聲如沸排苍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纪岁。三九已至,卻和暖如春则果,著一層夾襖步出監(jiān)牢的瞬間幔翰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工西壮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遗增,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓款青,卻偏偏與公主長(zhǎng)得像做修,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停饰及,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,160評(píng)論 22 257
  • title: 微信公眾號(hào)開發(fā):獲取openId和用戶信息 tags: 微信公眾號(hào) categories: 筆記 ...
    行徑行閱讀 140,171評(píng)論 5 63
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蔗坯,服務(wù)發(fā)現(xiàn),斷路器燎含,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 微信服務(wù)號(hào)開發(fā) 整體流程 域名報(bào)備宾濒,服務(wù)器搭建 Python開發(fā)環(huán)境和項(xiàng)目的初始化搭建; 微信公眾號(hào)注冊(cè)及開發(fā)模式...
    飛行員suke閱讀 4,472評(píng)論 0 14
  • 清晨窗外屏箍,雨停后水滴稀稀疏疏地敲打著梧桐葉绘梦,枝頭鳥兒的啼鳴聲漸漸遠(yuǎn)去,墻角的一叢細(xì)竹掩映著幾分蒼翠赴魁。遠(yuǎn)處的天色在雨...
    沂河生閱讀 258評(píng)論 0 1