Python学习一:微信公众号验证

1. 为什么学习Pythone

最近一段时间一直在研究一个项目,想进行市场化。如果直接开发软件的话感觉难度太大,但是如果是开发一个微信公众号,感觉难度小一些,刚好自己有一个订阅号,也已经通过了实名认证。就想说先拿这个微信号练练手,看自己一个人能开发到什么程度。于是说干就干了。

2.前期准备工作

2.1云平台选择

现在网络程序开发比以前好太多了,有很多的云平台可以选择。不像10年前,想开展一个网络服务首先就要考虑服务器、带宽、IP地址等等。这些云平台都包含了。我知道的国内的云平台就只有阿里云和新浪云,两个都去看了看,感觉新浪云的界面简单些,于是就充值了100元,开始在新浪云部署服务了。 步骤如下
1.新浪云申请账号
新浪云的账号是和新浪微博关联的,只要有微博账号就可以登陆了。
创建一个Python应用。

新浪云界面

2.学会GIT 命令
新浪云上的Python只能使用GIT和SVN两种方式上传代码,我两种都不会,但是GIT好像名气大一点,就选择了GIT方式。
不得不说,GIT的入门还是有一定的门槛的,反正一开始是把我弄得晕头转向。这里总结一下大概的步骤
1.下载安装Git软件,官网上下载,具体步骤就不说了。
2.在电脑上建立文件夹,作为代码仓库。
3.进入文件夹,右击鼠标,选择 Git Bash Here,进入Git 命令行界面。

GIT命令行界面

git init #初始化当前文件夹为仓库
git remote add sae https://sae.sinacloud.com/'你的应用名'
git add . #.代表所有文件,也可以输入具体文件名
git commit -am"这里是注释"
git push sae master:1 #代表把本地master分支的代码,push到远端sae库的版本1上

基本上熟悉以后就只用add,commit push 三个命令了,还是挺方便的。
”最好固定一个终端进行开发,换终端需要用git clone 命令先将远端的文件克隆过来, 再进行修改上传

3.Python 开发
3.1 Python 基础
我之前一点都没学过,买过一本老外写的书,翻译的也挺晦涩,不太好懂。网络上的教程很多,我推荐廖雪峰的Python3教程,写的深入浅出,一开始简单的语句还有在线助手可以进行测试。

3.2 了解微信公众号接口规则
3.2.1 公众号接口配置

微信公众号配置

url 就是在新浪云上申请的应用地址
token 自己设置,相当于验证的口令
解密方式选择明文

3.2.2 公众号接口通信原理
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

微信自带了一段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;
}
}

不过这段代码有点坑,因为根据我的实测,最后返回的是字符,不是布尔值。这里我主要参考了这篇文章

最后的的编程结果如下

  • 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'
) #凡是调用qlife地址的,都转由微信接口处理

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

因为markdown编辑器的问题,以上代码的缩进有些问题,需要手动缩进。

提几个需要注意的点。
1.算hash的时候,需要加上encode方法 ,表明用utf-8,
2.字符串合并用.join

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容