使用flask搭建微信公众号:完成token的验证
上一篇文章讨论了官方给的例子验证token失败的解决方法:微信公众号token验证失败
想了一下,还是决定不适用web.py这个框架。因为搜了一下他的中文文档不多,学起来可能会有点麻烦。而且看着他没有主动取适应python3.0,pip安装默认还是python2,例子什么的也都是python2的。我不太想回到python2。所以我选择了flask这个框架,简单而且文档比较多。
下面介绍flask完成服务器验证。因为有了上一次的经验,知道了验证就是获取几个get的数据包,然后加密再确认就可以了。所以只需要知道flask怎么获取get包就可以了。
经过搜索,flask的获取get使用的是request.args.get这个函数(要from flask import request),参数就是get的字段名字。
signature=request.args.get('signature')
知道这些就可以效法上一篇文章的代码进行改造了。(当然,也得学习一下flask的基本语法什么的)
from flask import Flask
from flask import request
import hashlib app = Flask(__name__) @app.route('/wx')
def getinput():
signature=request.args.get('signature')
timestamp=request.args.get('timestamp')
nonce=request.args.get('nonce')
echostr=request.args.get('echostr')
token = "maluguang"
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
sha1.update(list[0].encode('utf-8'))
sha1.update(list[1].encode('utf-8'))
sha1.update(list[2].encode('utf-8'))
hashcode = sha1.hexdigest()
print ("handle/GET func: hashcode, signature, timestamp, nonce, echostr, token: ", hashcode, signature,timestamp,nonce,echostr)
if hashcode == signature:
return echostr
else:
return "" if __name__ == '__main__':
app.run(port='')
这样就可以完成微信token的验证了。
题外话。本来打算跟着flask的开发文档把那个示例的博客系统做出来的。但是,做着做着就出错,有的地方也看不懂。因为那个东西已经基本算是个成品了,各种东西比较完善,我觉得初学的看不太懂。把他比作建楼房的话,应该先做骨架,最精简的那种,哪怕有很多漏洞,运行效率低什么的,但这样最起码知道每一步在干什么。他那种,我觉得就是一下子从底到上,一遍直接给完工了,做完直接入住,因为他已经提前考虑了很多问题,在写的时候也考虑进去了。而对于初学者,他事先考虑的很多问题,我们根本不明白为什么这样。所以,就放弃了。
还是那种,为了实现一个功能就去搜,一次了解一个功能,一个函数具体怎么用,怎么写比较适合我。我得想法是用许多点汇聚成面的学习。比方说,今天学了flask的get用法,明天学post,接着学表单提交,静态模板,数据库等等。一次明白一个东西,最后再汇聚到一起。嗯,flask的那个博客系统一次塞给我的东西太多了,接受不过来,而且自己也没能力将那些东西拆分开来理解。
参考文章:
flask的request如何获取参数(这个里面还有其他获取get数据的函数)
使用flask搭建微信公众号:完成token的验证的更多相关文章
- 使用flask搭建微信公众号:实现签到功能
终于到了实战阶段.用微信公众号实现一个简单的签到功能. 前情提要: 微信公众号token验证失败 使用flask搭建微信公众号:完成token的验证 使用flask搭建微信公众号:接收与回复消息 程序 ...
- 使用flask搭建微信公众号:接收与回复消息
token验证的意义 在看了别人的代码之后对token加密有了些理解了.但又觉得很鸡肋.第一次验证服务器的时候我在那弄了半天的验证其实不写也可以验证成功,只要直接返回echostr这个字段就行了.微信 ...
- 在新浪SAE上搭建微信公众号的python应用
微信公众平台的开发者文档https://www.w3cschool.cn/weixinkaifawendang/ python,flask,SAE(新浪云),搭建开发微信公众账号http://www. ...
- flask开发微信公众号
1.进入微信公众号首页,进行注册登录 https://mp.weixin.qq.com/ 2.进入个人首页,进行公众号设置 可参照 公众号文档 进行开发 开发前 先阅读 接口权限列表 3.配置服务器 ...
- 使用python django快速搭建微信公众号后台
前言 使用python语言,django web框架,以及wechatpy,快速完成微信公众号后台服务的简易搭建,做记录于此. wechatpy是一个python的微信公众平台sdk,封装了被动消息和 ...
- java微信公众号开发token验证失败的问题及解决办法
本文引自http://m.blog.csdn.net/qq_32331997/article/details/72885424 微信公众平台服务器配置时,需要引入token,但是提交的时候总是提示to ...
- Flask接通微信公众号
import hashlib import xml.etree.ElementTree as ET from flask import Flask, request import time app = ...
- ngrok逆向代理服务器搭建微信公众号本地开发环境
一条命令解决的外网访问内网问题 本地WEB外网访问.本地开发微信.TCP端口转发 平台登陆地址:http://www.ngrok.cc/login 新版本上线启动方式更简单使用视频教程 在路由器上面的 ...
- 微信公众号 报token验证失败
最近两天一直碰到token验证失败的问题,如下图所示 然后上网疯狂的搜索答案,碰到的人还真不少,原因大概有这几个: 1)服务器URL未实名认证 2)token重名(基本不可能) 3)服务器部署的项目 ...
随机推荐
- 网络编程~~~ socket(套字节)
一 socket (套接字) socket处于应用层与传输层之间,提供了一些简单的接口,避免与操作系统之间的对接,省去了相当繁琐复杂的操作. socket在python中属于一个模块,通过调用模块中已 ...
- Python入门基础学习(文件与异常处理)
Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...
- LeetCode 5127. 删除被覆盖区间 Remove Covered Intervals
地址 https://www.acwing.com/solution/LeetCode/content/7021/ 目描述给你一个区间列表,请你删除列表中被其他区间所覆盖的区间. 只有当 c < ...
- Java之Scanner类
Scanner类概述 一个可以解析基本类型和字符串的简单文本扫描器.简而言之,Scanner类的功能:可以实现键盘输入数据,到程序当中. 例如,以下代码使用户能够从 System.in 中读取一个数. ...
- NOIP 2012 文化之旅
洛谷 P1078 文化之旅 洛谷传送门 JDOJ 1788: [NOIP2012]文化之旅 T4 JDOJ传送门 Description Input Output Sample Input Input ...
- vscode源码分析【七】主进程启动消息通信服务
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析[三]程序的启动逻辑,性能问题的追踪 ...
- 融云技术分享:融云安卓端IM产品的网络链路保活技术实践
本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...
- 【Linux】Linux 性能瓶颈阈值分析
Linux系统资源包括:CPU.IO(磁盘和网络).内存等 利用率达到三个阶段时: 1)50% 引起注意 2)70% 密切关注 3)90% 严重情况 vmstat.sar.iostat.mpstat. ...
- Generating a new SSH key
Open Git Bash. Paste the text below, substituting in your GitHub email address. $ ssh-keygen -t rsa ...
- VS2019 MSB364 未找到框架“NETFramework,Version=v4.7”
环境: WIN 10 VS2019 已安装框架v4.7.2 问题: 在打开一些早期项目时,编译报 MSB364 错误,未找到框架“NETFramework,Version=v4.7”或未找到框架“NE ...