Python(三)微信公众号开发
ps:暂未完善,先做记录。本文核心讲外网穿透及微信Token验证
阅读 基本开发流程
申请个人公众号-订阅号
微信公众平台https://mp.weixin.qq.comhttps://mp.weixin.qq.com
自定义菜单
微信公众平台当然不只是给开发人员使用的,它提供了很多非技术人员可在UI界面上交互操作的功能模块。
如配置消息回复、自定义菜单、发布文章等
微信Token验证
微信提供了非开发人员也可自定义编辑的菜单UI,但是如果我们想自定义脚本开发呢?那么则需要对接微信SDK进行开发。
说明:由于微信服务器只是起到转发消息的作用,接收消息后的处理在我们本地,所以需要连接到外网,故此进行外网穿透
流程:
一:进行外网穿透
1.下载natapp客户端 到本地任意路径都可以,配置config.ini
[default]
authtoken=01d12c4dc7xxxxx
clienttoken=
log=none
loglevel=ERROR
http_proxy=
a.购买 隧道 和 二级域名
这里注意最好购买支持https的隧道 和有SSL证书的二级域名,价格都不贵,隧道允许购买多个
b.在 我的隧道 里进行配置
配置好的隧道如下
注意:我们需要把 authtoken 拷贝到ini里对应的authToken
这时我们运行natapp.exe即可看到
到这里natapp配置完成
2.我们找到微信公众号测试平台 公众平台测试号Token验证 进行配置URL和Token
Tips:这里点提交是不会成功的,下面会讲到 。Token需要在下文使用到(WECHAT_TOKEN )
我们把Forwarding里https链接拷贝到浏览器后可以看到自动生成了新的url *******/http/in
这里我们把浏览器新的url链接拷贝到 公众号测试平台-接口配置信息 对应的URL上
下面需要使用到 appID、appsecret、Token、URL 在代码里进行验证
为什么要验证?请看 微信Token验证
3.验证微信Token
使用 VSCode、Python3.10 版本不重要,如果缺失引用需要 pip 安装对应包(安装Python记得勾选pip)
pip install flask
pip install requests
如未学过Python,推荐廖雪峰老师的网站,简单易学
Python代码如下:
from flask import Flask, request, abort, render_template
import hashlib# 常量
WECHAT_TOKEN = "xxxxxxx" # 微信的token令牌,和配置时的token要统一
WECHAT_APPID = "xxxxxxx" # appID
WECHAT_APPSECRET = "xxxxxxxx" # AppSecretapp = Flask(__name__)#运行后执行的是http://127.0.0.1:80/http/in 链接
@app.route("/http/in", methods=["GET", "POST"])
def wechat():"""对接微信公众号服务器"""print('对接微信公众号服务器')# 1、提取微信服务器发送的参数signature = request.args.get("signature")timestamp = request.args.get("timestamp")nonce = request.args.get("nonce")# 2、校验参数,确定数据源是不是微信后台if not all([signature, timestamp, nonce]):abort(400)# 3、按照微信的流程进行计算签名,进行sha1加密, 得到正确的签名值li = [WECHAT_TOKEN, timestamp, nonce]li.sort()tmp_str = "".join(li)sign = hashlib.sha1(tmp_str.encode("utf-8")).hexdigest()# 4、判断计算的签名值与请求的签名参数是否等,如果相同,则证明请求来自微信服务器if signature != sign:abort(403)else:# 5、表示是第一次接入微信服务器的验证if request.method == "GET":echostr = request.args.get("echostr")if not echostr:abort(400)return echostrif __name__ == '__main__':app.run(host="127.0.0.1", port=8080, debug=True) #127.0.0.1是localhost本地服务器 8080端口要和natapp上配置的端口保持一致。运行natapp的时候可看到
到这里基本我们都写完配置完了,最后开始运行
a.运行Python脚本,推荐快捷鼠标右键Run Python File In Terminal ,如果有条件可断点查看执行过程
b.运行natapp.exe (如果先运行了natapp.exe,Python会提示不允许套接字也就是端口占用)
c.点击微信公众号测试平台Token测试号管理里的【提交】按钮
Tips:有条件的同学可以用断点调试python脚本,看接收到的数据
好了,到这里微信Token配置完成,提交按钮已消失,哎,挺不容易的
二:
参考文献:
1. 关于装饰器@app.route的正解 --> Python装饰器@app.route() Flask
2.关于外网穿透的参考 --> Ngrok外网穿透
3.微信公众号开发详细流程--> 微信公众号开发基本流程
Python(三)微信公众号开发相关推荐
- 使用Python进行微信公众号开发(三)回复消息
写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...
- 使用Python进行微信公众号开发(二)接收消息
写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...
- 基于python的微信公众号开发教程_基于python的微信公众号开发教程
应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...
- 视频教程-基于python的微信公众号开发教程-微信开发
基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...
- 基于python的微信公众号开发
最近想自学服务器方面的知识,用微信公众号开发来练手.阅读了一些文章,实践以后总结一下. 租了腾讯云服务器,操作系统为 Ubuntu Server 14.04.1 LTS 64位,分配了一个公网IP地址 ...
- python训练营微信公众号真实性_用python进行微信公众号开发(仅测试学习)
今天看到篇教程,是用python开发微信公众号的,觉得有意思,就敲代码实现了一下,成功后更觉得好玩,故记录,方便开发深入时使用. 基础背景介绍: 首先得有个人微信号(没有自行注册),为方便测试学习: ...
- Python进行微信公众号开发
一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提示注册即可 注意:本文样例使用个人公众号,由于个人公众号没有接口权限,自定义菜单无法进行开发,同 ...
- python 微信公众号开发[1] 后台服务器端配置与公众号开发配置
更新时间:2020年3月7日 微信公众号开发的硬件必备条件:(1)申请一个公众号 (2)有公网ip的服务器(最好是阿里云,腾讯云等的云服务器)(3)解析到(2)中服务器地址的域名(阿里云,腾讯云购买即 ...
- Python 微信公众号开发
大三上的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的.http://blog.csdn.net/marksinoberg/article/details/54235271 后来服务器到 ...
- Python微信公众号开发
摘要: 大三上的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的.http://blog.csdn.net/marksinoberg/article/details/54235271 后来 ...
最新文章
- android 自定义键盘高度不对,NVUE 容器一旦设置了position且容器高度不能超过整屏,在安卓端就会被键盘遮挡...
- android 自定义皮肤,Android Studio 自定义皮肤主题和背景
- 从动力学角度看优化算法SGD:一些小启示
- 使用ABAP代码获得tcode RZ11里的参数值
- 美国知名华人学者陈刚被捕,他出身贫寒,是一个不折不扣的工作狂
- 【从入门到放弃-Java】并发编程-NIO-Channel
- windows oracle 内存大,如何设计Oracle数据库内存的大小
- 武汉科技大学085211计算机,武汉科技大学计算机科学与技术学院
- Git-第三篇廖雪峰Git教程学习笔记(2)回退修改,恢复文件
- Memory for crash kernel (0x0 to 0x0) notwithin permissible range
- 鸿蒙官方编辑器 DevEco Studio 2.0.12.201使用流程
- 将在PPT中画的图 导入 word,保存矢量图格式
- 通过Adobe Acrobat DC和iText.jar完成通过pdf模板生成pdf
- 计算机体系结构 第一章 计算机系统结构的基础知识(2)
- pre-trained模型的使用
- 2019.2.21 对自定义页面的修改
- 微信小程序--优购商城项目(8)
- 还记得这门古老的编程语言么,送你一份perl书单!
- java中图片加载不出来的_请问图片加载不出来是为什么
- SyntaxError: Non-ASCII character ‘\xe9‘ in file dun.py on line 4