Python微信公众号开发入门:环境准备与鉴权校验流程详解

开发微信公众号首先需要准备以下内容:

Python微信公众号开发入门:环境准备与鉴权校验流程详解

本文是Python微信公众号开发的第一篇文章。主要介绍环境准备(主要讲服务器环境)和微信公众号认证验证流程。

0.配置微信公众号

在开发微信公众号之前,您需要对微信公众号进行一些配置。首先我们看一下需要的配置项:

(1)公众号后台页面点击“设置与开发”-->基础配置

(2)在右侧“基础配置”页面,可以看到开发者ID(AppID)并启用开发者密码(AppSecret)。您需要自行记录开发者密码。平台不会记录或再次向您展示。如果您忘记了,需要点击“重置”才能重新获取。

(3) 对于下面的服务器配置,点击“修改配置”,进入如下界面,需要填写的信息:

可以看到,微信公众号开发,我们需要准备一个服务器URL。我在上面用红色标记了URL。这是配置中最简单的步骤。我在这里被愚弄了一天。 。 。我好几次想放弃。接下来我会用我的血泪教训来帮助大家避免掉坑。

1. 准备服务器 1.1 服务器的作用

在准备服务器之前,我们先了解一下这里的服务器是用来做什么的。答案是接收微信消息和事件。

在上面的服务器配置中添加服务器URL,然后点击“提交”按钮后,微信服务器就会向填写的服务器URL发送GET请求。 GET请求携带四个参数:

参数说明

签名

微信加密签名,签名结合了你上面填写的自定义Token参数和请求中的时间戳参数和nonce参数。

时间戳

时间戳

随机数

随机数

回声

随机字符串

开发者收到这四个参数后,按照【一定规则】生成签名,并与微信服务器发送的签名进行比对。如果一致,则说明该GET请求来自微信服务器。原样返回echostr参数内容,访问生效。 ,成功成为开发者,否则访问失败。

该【一定规则】如下:

将token、timestamp、nonce这三个参数按字典顺序排序。将三个参数字符串拼接成一个字符串,进行sha1加密。开发者可以将加密后的字符串与签名进行比较,识别该请求来自微信。

我们先写出开发者收到参数后用来验证的代码,然后在服务器上使用(记得在上面的配置中点击“提交”之前先在服务器上运行以下代码!):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, request
import hashlib
app = Flask(__name__)
@app.route('/')
def index():
    # 设置token,开发者配置中心使用
    token = '你配置的自定义Token'    # <------ 修改这里
    # 获取微信服务器发送过来的参数
    data = request.args
    signature = data.get('signature')
    timestamp = data.get('timestamp')
    nonce = data.get('nonce')
    echostr = data.get('echostr')
    # 对参数进行字典排序,拼接字符串
    temp = [timestamp, nonce, token]
    temp.sort()
    temp = ''.join(temp)
    # 加密
    if (hashlib.sha1(temp.encode('utf8')).hexdigest() == signature):
        return echostr
    else:
        return 'error', 403
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80, debug=True) # <----- 这里指定80端口,不要指定其它

1.2 服务器选择

上面写着公众账号服务器配置URL的要求:域名或者公网IP

1.2.1 使用本地机器

一开始我想用本地环境作为服务器,这样就可以直接在本地写代码了。但问题来了。本地IP为私有IP,公共平台无法访问。如果在URL中填写本地IP地址并点击“提交”,总是会报“系统发生错误,请稍后重试”的错误信息。

在本地运行上述验证码后,如下所示:

将运行的本地IP地址填入服务器URL,点击“提交”,会报错:

出现此错误的原因一般是微信公众号无法访问服务器,或者服务器内部出现错误。一般情况下,如果服务器内部出现错误,服务器端会报错,类似如下:

如果你的服务器端没有打印任何内容,则说明微信服务器的请求无法访问你的服务器。

那么,如何使用本机作为服务器呢?

可以使用一些工具来穿透内网,将本地IP暴露到公网以供外部访问,比如ngrok或者cpollo工具。因为我的内网安全策略不允许内网渗透,所以放弃了。如果你想使用这个方法,可以参考下面的博文:

使用Natapp(ngrok)进行微信本地开发调试 - NATAPP-基于ngrok的内网穿透国产高速内网映射工具

微信公众号本地开发调试——无公网IP、内网穿透_51CTO博客_本地微信公众号运营

1.2.2 使用微信云开发

在微信官方文档中,提到“小程序云开发”可以与公众号共享开发环境。该方法不需要额外的服务器,并且使用该方法直接连接微信公众号,无需检查token环境。以上是我自己写的验证码。

1启用公众号开发者模式 |微信开放文档 微信开发者平台文档

可惜我研究了很久,还没弄清楚怎么用,而且网上的教程也比较少……暂时先放一边,等以后再研究。如果您有兴趣,请给我一些建议,非常感谢!

1.2.3 使用云服务器

网上现有的绝大多数资料都是采用这种方法开发的。您可以自行申请云服务器,例如阿里云、百度云、华为云、腾讯云等。

这种方法的缺点是需要钱。不过好在这些大公司的云服务器一般都会有闪购或者试用活动。如果只是为了学习和测试,一个月的试用期也是可以的……

我刚刚白白买了一个腾讯云的云服务器。您可以注册一个帐户来尝试一下。新用户可以免费试用,需要完成个人实名认证。

腾讯云行业智变·云启未来——腾讯腾讯云(腾讯云)为数百万企业和开发者提供安全稳定的云计算服务,涵盖云服务器、云数据库、云存储、视频和CDN、域名注册等以及其他针对各行业的综合云服务和解决方案。

1.2.3.1 申请云服务器

(1)打开上面的腾讯云链接,选择“免费试用”部分

(2) 选择云服务器并点击“立即尝试”

(3) 立即试用后,系统会要求您选择要安装的镜像。这里,选择“宝塔Linux”。操作简单。

1.2.3.2 云服务器配置

(1)进入您的腾讯云后台,可以看到您刚刚申请的云服务器。

(2)点击云服务器,进入后台管理页面,“重置密码”。该密码是您通过命令行远程登录时将使用的密码。

(3) 防火墙设置:“页面顶部”-->“防火墙”-->“添加规则”-->“端口号:8888”-->确定

(4)获取宝塔面板的管理员用户名和密码:“页面顶部”-->“应用管理”-->“先复制命令”-->“登录”

(5) 点击登录后,您将看到用户名和密码,以及外部链接。在浏览器中打开外部链接,输入用户名和密码,进入宝塔界面。

(6)进去后是这个样子。如果您还没有注册百塔账户,您需要先注册账户并登录百塔网页。然后再次打开上面的“外部网络面板地址”,就可以看到如下界面。

1.2.3.3 配置Python环境-CentOS Anaconda

具体步骤可以参考以下文章,比较简单:

CentOS安装/卸载Anaconda(详细图解) - 腾讯云开发者社区 - 腾讯云 从官网下载Anaconda非常慢是众所周知的原因,所以为了加快下载速度,这里我们从清华源。

1.2.3.4 配置远程开发环境-VSCode

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

32阅读

外国教程python,python编程教学视频

2026年09月02日

27阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

27阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

23阅读