Python FastAPI 微信公众号后台服务器验证
生活随笔
收集整理的這篇文章主要介紹了
Python FastAPI 微信公众号后台服务器验证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 微信公眾平臺開發接入概述
- 一、填寫服務器配置
- 二、驗證消息的確來自微信服務器
- FastAPI實現消息認證
- 三、依據接口文檔實現業務邏輯
微信公眾平臺開發接入概述
接入微信公眾平臺開發,開發者需要按照如下步驟完成:
1、填寫服務器配置
2、驗證服務器地址的有效性
3、依據接口文檔實現業務邏輯
一、填寫服務器配置
填寫服務器地址(URL)、Token和EncodingAESKey,
二、驗證消息的確來自微信服務器
開發者提交信息后,微信服務器將發送GET請求到填寫的服務器地址URL上,GET請求攜帶參數如下表所示:
| signature | 微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。 |
| timestamp | 時間戳 |
| nonce | 隨機數 |
| echostr | 隨機字符串 |
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。
加密/校驗流程如下:
注:返回值需要是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 需要 注冊微信掃碼,然后輸入公眾號登錄密碼。
總結
以上是生活随笔為你收集整理的Python FastAPI 微信公众号后台服务器验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JCheckbox全选
- 下一篇: 写JQuery 插件 什么?你还不会写J