Python學(xué)習(xí)一:微信公眾號(hào)驗(yàn)證

1. 為什么學(xué)習(xí)Pythone

最近一段時(shí)間一直在研究一個(gè)項(xiàng)目音同,想進(jìn)行市場(chǎng)化。如果直接開(kāi)發(fā)軟件的話感覺(jué)難度太大,但是如果是開(kāi)發(fā)一個(gè)微信公眾號(hào)骇吭,感覺(jué)難度小一些,剛好自己有一個(gè)訂閱號(hào)歧寺,也已經(jīng)通過(guò)了實(shí)名認(rèn)證燥狰。就想說(shuō)先拿這個(gè)微信號(hào)練練手,看自己一個(gè)人能開(kāi)發(fā)到什么程度斜筐。于是說(shuō)干就干了龙致。

2.前期準(zhǔn)備工作

2.1云平臺(tái)選擇

現(xiàn)在網(wǎng)絡(luò)程序開(kāi)發(fā)比以前好太多了,有很多的云平臺(tái)可以選擇顷链。不像10年前目代,想開(kāi)展一個(gè)網(wǎng)絡(luò)服務(wù)首先就要考慮服務(wù)器、帶寬嗤练、IP地址等等榛了。這些云平臺(tái)都包含了。我知道的國(guó)內(nèi)的云平臺(tái)就只有阿里云和新浪云煞抬,兩個(gè)都去看了看霜大,感覺(jué)新浪云的界面簡(jiǎn)單些,于是就充值了100元革答,開(kāi)始在新浪云部署服務(wù)了战坤。 步驟如下
1.新浪云申請(qǐng)賬號(hào)
新浪云的賬號(hào)是和新浪微博關(guān)聯(lián)的,只要有微博賬號(hào)就可以登陸了残拐。
創(chuàng)建一個(gè)Python應(yīng)用途茫。

新浪云界面

2.學(xué)會(huì)GIT 命令
新浪云上的Python只能使用GIT和SVN兩種方式上傳代碼,我兩種都不會(huì)蹦骑,但是GIT好像名氣大一點(diǎn)慈省,就選擇了GIT方式。
不得不說(shuō)眠菇,GIT的入門還是有一定的門檻的边败,反正一開(kāi)始是把我弄得暈頭轉(zhuǎn)向。這里總結(jié)一下大概的步驟
1.下載安裝Git軟件捎废,官網(wǎng)上下載笑窜,具體步驟就不說(shuō)了。
2.在電腦上建立文件夾登疗,作為代碼倉(cāng)庫(kù)排截。
3.進(jìn)入文件夾嫌蚤,右擊鼠標(biāo),選擇 Git Bash Here断傲,進(jìn)入Git 命令行界面脱吱。

GIT命令行界面

git init #初始化當(dāng)前文件夾為倉(cāng)庫(kù)
git remote add sae https://sae.sinacloud.com/'你的應(yīng)用名'
git add . #.代表所有文件,也可以輸入具體文件名
git commit -am"這里是注釋"
git push sae master:1 #代表把本地master分支的代碼认罩,push到遠(yuǎn)端sae庫(kù)的版本1上

基本上熟悉以后就只用add箱蝠,commit push 三個(gè)命令了,還是挺方便的垦垂。
”最好固定一個(gè)終端進(jìn)行開(kāi)發(fā)宦搬,換終端需要用git clone 命令先將遠(yuǎn)端的文件克隆過(guò)來(lái), 再進(jìn)行修改上傳

3.Python 開(kāi)發(fā)
3.1 Python 基礎(chǔ)
我之前一點(diǎn)都沒(méi)學(xué)過(guò)劫拗,買過(guò)一本老外寫的書间校,翻譯的也挺晦澀,不太好懂页慷。網(wǎng)絡(luò)上的教程很多憔足,我推薦廖雪峰的Python3教程,寫的深入淺出,一開(kāi)始簡(jiǎn)單的語(yǔ)句還有在線助手可以進(jìn)行測(cè)試差购。

3.2 了解微信公眾號(hào)接口規(guī)則
3.2.1 公眾號(hào)接口配置

微信公眾號(hào)配置

url 就是在新浪云上申請(qǐng)的應(yīng)用地址
token 自己設(shè)置四瘫,相當(dāng)于驗(yàn)證的口令
解密方式選擇明文

3.2.2 公眾號(hào)接口通信原理
開(kāi)發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的服務(wù)器地址URL上欲逃,GET請(qǐng)求攜帶參數(shù)如下表所示:

參數(shù) 描述
signature 微信加密簽名找蜜,signature結(jié)合了開(kāi)發(fā)者填寫的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)稳析。
timestamp 時(shí)間戳
nonce 隨機(jī)數(shù)
echostr 隨機(jī)字符串

開(kāi)發(fā)者通過(guò)檢驗(yàn)signature對(duì)請(qǐng)求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)洗做。若確認(rèn)此次GET請(qǐng)求來(lái)自微信服務(wù)器,請(qǐng)?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容彰居,則接入生效诚纸,成為開(kāi)發(fā)者成功,否則接入失敗陈惰。加密/校驗(yàn)流程如下:
1)將token畦徘、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
2)將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
3)開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比抬闯,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信

微信自帶了一段php代碼:
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;

$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}

不過(guò)這段代碼有點(diǎn)坑井辆,因?yàn)楦鶕?jù)我的實(shí)測(cè),最后返回的是字符溶握,不是布爾值杯缺。這里我主要參考了這篇文章

最后的的編程結(jié)果如下

  • config.yaml

name: qlife
version: 1

libraries:

- name: webpy
version: "0.36"

- name: lxml
version: "2.3.4"

  • index.wsgi

# coding: UTF-8
import os
import sae
import web

from weixinInterface import WeixinInterface

urls = (
'/','WeixinInterface'
) #凡是調(diào)用qlife地址的睡榆,都轉(zhuǎn)由微信接口處理

app_root = os.path.dirname(file)
templates_root = os.path.join(app_root, 'templates')
render = web.template.render(templates_root)

app = web.application(urls, globals()).wsgifunc()
application = sae.create_wsgi_app(app)

-weixinInterface.py

# -- coding: utf-8 --
import hashlib
import web
import lxml
import time
import os
import urllib2,json
from lxml import etree

class WeixinInterface:
def GET(self):
data = web.input()
signature = data.signature
timestamp = data.timestamp
nonce = data.nonce
token = 'qlife'
echostr = data.echostr

list = [token,timestamp,nonce]
list.sort()
list2 = ''.join(list)
sha1 = hashlib.sha1()
sha1.update(list2.encode('utf-8'))
hashcode = sha1.hexdigest()

if hashcode == signature:
return echostr

因?yàn)閙arkdown編輯器的問(wèn)題萍肆,以上代碼的縮進(jìn)有些問(wèn)題袍榆,需要手動(dòng)縮進(jìn)。

提幾個(gè)需要注意的點(diǎn)塘揣。
1.算hash的時(shí)候包雀,需要加上encode方法 ,表明用utf-8勿负,
2.字符串合并用.join

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馏艾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奴愉,更是在濱河造成了極大的恐慌,老刑警劉巖铁孵,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭硼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蜕劝,警方通過(guò)查閱死者的電腦和手機(jī)檀头,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岖沛,“玉大人暑始,你說(shuō)我怎么就攤上這事∮は鳎” “怎么了廊镜?”我有些...
    開(kāi)封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)唉俗。 經(jīng)常有香客問(wèn)我嗤朴,道長(zhǎng),這世上最難降的妖魔是什么虫溜? 我笑而不...
    開(kāi)封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任雹姊,我火速辦了婚禮,結(jié)果婚禮上衡楞,老公的妹妹穿的比我還像新娘吱雏。我一直安慰自己,他們只是感情好瘾境,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布歧杏。 她就那樣靜靜地躺著,像睡著了一般寄雀。 火紅的嫁衣襯著肌膚如雪得滤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天盒犹,我揣著相機(jī)與錄音懂更,去河邊找鬼眨业。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沮协,可吹牛的內(nèi)容都是我干的龄捡。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼慷暂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼聘殖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起行瑞,我...
    開(kāi)封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤奸腺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后血久,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體突照,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年氧吐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讹蘑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡筑舅,死狀恐怖座慰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翠拣,我是刑警寧澤版仔,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站心剥,受9級(jí)特大地震影響邦尊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜优烧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一蝉揍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畦娄,春花似錦又沾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至驳癌,卻和暖如春滑燃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颓鲜。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工表窘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留典予,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓乐严,卻偏偏與公主長(zhǎng)得像瘤袖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昂验,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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