文章目录

  • 微信公众平台开发接入概述
  • 一、填写服务器配置
  • 二、验证消息的确来自微信服务器
    • FastAPI实现消息认证
  • 三、依据接口文档实现业务逻辑

微信公众平台开发接入概述

接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑

一、填写服务器配置

填写服务器地址(URL)、Token和EncodingAESKey,

  1. URL是开发者用来接收微信消息和事件的接口URL。
  2. Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。
  3. EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

二、验证消息的确来自微信服务器

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

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

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
加密/校验流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

注:返回值需要是HTMLResponse,刚开始直接返回echostr一直返回token验证失败

FastAPI实现消息认证

# conding=gbk
from fastapi import APIRouter, Depends
from fastapi.responses import HTMLResponse
from starlette.requests import Request
from app.utils.responses import ResponsesExampleVale
from extensions.logger import logger
import hashlib
router = APIRouter()
WINXIN_TOKEN = "你的token"@router.get("/verify/",tags=["验证服务器地址的有效性"],responses=ResponsesExampleVale("随机字符串")
)
async def check_signature(request: Request,signature: str,timestamp: str,nonce: str,echostr: str,
):"""signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp 时间戳nonce 随机数echostr 随机字符串开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1)将token、timestamp、nonce三个参数进行字典序排序2)将三个参数字符串拼接成一个字符串进行sha1加密3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信"""logger.info(f"signature: {signature}")logger.info(f"timestamp: {timestamp}")logger.info(f"nonce: {nonce}")logger.info(f"echostr: {echostr}")_ = "".join(sorted([WINXIN_TOKEN, timestamp, nonce]))sign = hashlib.sha1(_.encode('UTF-8')).hexdigest()return HTMLResponse(content=echostr if sign == signature else "error")

三、依据接口文档实现业务逻辑

前提条件:

获取AppSecret 需要 注册微信扫码,然后输入公众号登录密码。

pass

Python FastAPI 微信公众号后台服务器验证相关推荐

  1. Python开发微信公众号后台(系列三)

    原文链接:点击打开链接 摘要: 之前有主流的小黄鸡机器人,但是没找到官方的网页版.(小黄鸡提供付费 API )尝试使用http://www.niurenqushi.com/app/simsimi/(虽 ...

  2. 技术小白用python搭建微信公众号后台

    其实既然你有做开发者模式的想法,那你肯定是有些基础的. 至少会学过一些基础的编程语言. 而读完本片文章,你理解后绝对可以自己开发(一些简单的)功能.不过需要注意的是,本文只是"授人以渔&qu ...

  3. [基于Python的微信公众号后台开发:2]文字消息的接收与解密

    文章目录 1.服务器安装pycryptodome 2.下载微信官方提供的解密SDK 3.上传SDK到服务器 4.开始测试 5.发送消息到公众号 6.测试解密:把所有参数套入官方给的Sample.py文 ...

  4. python公众号教学_Python微信公众号后台开发教程

    本篇文章开启Python开发微信公众号后台 准备: 云服务平台:(我用的是京东云的) 公众号:自己注册一个就行 Git:代码管理平台 了解平台 进入公众号后台,查看开发相关项 基本配置(服务器配置等) ...

  5. python开发微信公众号开发教程百度云_Python开发微信公众号后台(系列一)

    Python 开发微信公众号后台(系列一) 專 欄段晓晨,写过一点爬虫,写过几篇文章.能力虽 有限,会尽量把想说的东西讲清楚. 知乎 ID :段小草 知乎专栏:小段同学的杂记, https://zhu ...

  6. 使用Python进行微信公众号开发(二)接收消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  7. 使用Python进行微信公众号开发(三)回复消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  8. 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程

    因为想自己编写微信公众号后台的程序,实现一些小功能,为以后的开发做准备,所以就从零开始,摸索着注册微信公众号,租用服务器,搭建环境进行开发. 简单的搭建过程中也经历了一些波折,踩了不少坑,仅留此文给跟 ...

  9. SpringBoot搭建微信公众号后台(零):服务搭建与接口验证

    关注作者,更多动态实时掌握,微信公众号:隔壁的程序员 前言:从这篇开始小王子将开始一个新的系列内容,从零开始搭建自己的微信公众号后台.内容大致规划为:环境篇,包括用到的工具安装,破解,配置:基础篇,主 ...

  10. Python微信公众号后台开发003:自定义菜单

    有同学问道微信公众号后台开发的自定义菜单怎么实现? 这个问题本来想放到后面的,因为的确对公众号的影响挺明显的, 因为开启后台服务,公众号的自定义菜单就不见了,很影响使用, 也有同学问这个问题,就提前了 ...

最新文章

  1. php引用类型变量,PHP变量的值类型和引用类型
  2. 《R语言数据挖掘:实用项目解析》——第2章,第2.9节无参数方法
  3. 关于如何在github上创建团队开发环境
  4. Gradle 简单使用
  5. 好东西仿Vista窗体
  6. 韩顺平php视频笔记36 php基本语法
  7. js控制文件拖拽,获取拖拽内容。
  8. 第 7 章 MybatisPlus 插件
  9. 做web开发需要学习哪些技术--基础篇
  10. ADO方法访问数据库的封装接口
  11. linux TP 阿帕奇 数据库 php的安装
  12. k近邻matlab,模式识别 最近邻法和k近邻法MATLAB实现.doc
  13. 将jpg格式转成PDF格式的转换器
  14. php写登录的视频,PHP cookie实现记录用户登陆信息的方法(图文+视频)
  15. Cherno_游戏引擎系列教程(1):1~16
  16. 软件评测师考试学习计划
  17. 户外蓝牙小音箱值得买
  18. java qq登陆 server_java实现QQ互联登录
  19. 系统分析与设计期末课程总结
  20. UOJ 265 NOIP 2016 DAY2 T3 浅谈预处理状态压缩动态规划

热门文章

  1. 智力问答选择题_儿童智力问答题带答案
  2. 如何扩展计算机c盘的控件,电脑C盘空间不足,怎么把c盘空间可以扩大
  3. 关于IplImage中widthstep的大小与width,nchanne
  4. 技术交流群和CSDN免费下载服务
  5. linux之替换开机logo
  6. 老男孩Linux运维决心书
  7. @JsonView注解的使用
  8. java中的关键字有哪些_java关键字有哪些?java关键字大全
  9. php 单位食堂订餐,职工食堂微信订餐系统 单位饭卡消费系统
  10. 如何测试视频播放器?