日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python FastAPI 微信公众号后台服务器验证

發布時間:2023/12/9 python 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python FastAPI 微信公众号后台服务器验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 微信公眾平臺開發接入概述
  • 一、填寫服務器配置
  • 二、驗證消息的確來自微信服務器
    • FastAPI實現消息認證
  • 三、依據接口文檔實現業務邏輯


微信公眾平臺開發接入概述

接入微信公眾平臺開發,開發者需要按照如下步驟完成:
1、填寫服務器配置
2、驗證服務器地址的有效性
3、依據接口文檔實現業務邏輯

一、填寫服務器配置

填寫服務器地址(URL)、Token和EncodingAESKey,

  • URL是開發者用來接收微信消息和事件的接口URL。
  • Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。
  • EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。
  • 二、驗證消息的確來自微信服務器

    開發者提交信息后,微信服務器將發送GET請求到填寫的服務器地址URL上,GET請求攜帶參數如下表所示:

    參數描述
    signature微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
    timestamp時間戳
    nonce隨機數
    echostr隨機字符串

    開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。
    加密/校驗流程如下:

  • 將token、timestamp、nonce三個參數進行字典序排序
  • 將三個參數字符串拼接成一個字符串進行sha1加密
  • 開發者獲得加密后的字符串可與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 微信公众号后台服务器验证的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。