前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
- 了解微信公众号开发流程
- 实现内网穿透
- 完成微信公众号开发验证
二、详情解读
2.1.微信公众号开发
2.1.1.微信公众号
- 订阅号:为媒体和个人提供的一种信息传播方式,主要偏于为用户传达资讯(类似报纸杂志),主要的定位是阅读,每天可以群发1条消息。
- 服务号:为企业,政府或组织提供对用户进行服务,主要偏于服务交互。
- 企业号:为企业、政府、事业单位,实现生产管理和协作运营的移动化,主要用于公司内部通讯使用,旨在为用户提供移动办公,需要先有成员的通讯信息验证才可以关注成功企业微信。
2.1.2.微信公众号后台管理
- 没有针对公众号做开发
- 针对公众号进行开发
2.1.3.业务流程
2.2.开发者环境
2.2.1.内网穿透
- 内网穿透,网络地址转换(
Network Address Translation,NAT
):通过映射端口,能让外网的计算机找到处于内网的计算机。 - 将本地计算机设置成为开发者服务器:有公网可以访问的域名,公网域名与本地
IP
对应(如:127.0.0.1:8080
) - 打开:https://natapp.cn
– 用户注册
– 实名认证
– 下载客户端
windows
:
小编用windows
,自己下载只有一个natapp.exe
文件,后面在官网上下载了config.ini
这个文件Linux/Mac OS
–natapp
登录https://natapp.cn进入后台,如下图:
Step0:
创建免费隧道
step1
:免费购买隧道:
Step2
: 配置隧道
这里要注意:由于是免费隧道,域名/端口会随机且不定时强制更换。所以,每次启动的时候,要检查一下是否有更换,有则跟着更换。
- 在本地执行
–Linux/Mac OS
# 获得权限
% chmode a+x natapp # 这个在软件natapp同一个目录下执行的命令
% ./natapp # 显示认证错误
% ./natapp -authtoken your-token
如果有显示下面的结果,则表示本地执行成功:
windows
:
2.2.2.创建项目
- 创建虚拟目录
python3 -m venv official
cd official
source ./bin/activate
- 安装
Django
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/django==2.2.10
- 创建项目
django-admin startproject wechat
在settings.py
中配置公网域名
ALLOWED_HOSTS = ['meq566.natappfree.cc', ]
- 测试
– 启动服务:wechat% python manage.py runserver 127.0.0.1:8080
– 用公网域名访问:http://meq5b6.natappfree.cc
2.3.配置服务器和验证
2.3.1.申请开发测试账号
- 地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
上图的token
是免费隧道里的token
。如何进行服务器验证呢?
2.3.2.阅读官方文档
- 网址:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
– 第一步:填写服务器配置
– 第二步:验证消息的确来自微信服务器
– 第三步:业务逻辑
2.3.3.创建应用
- 接收来自微信服务器的信息
python manage.py startapp auth
# 安装第三方包
pip install wechatpy
wechatpy
官网:http://docs.wechatpy.org/zh_CN/master/
Step1
配置路由
wechat/urls.py
代码如下:
from django.contrib import admin
from django.urls import path, include, re_path
urlpatterns = [
path('admin/', admin.site.urls),
re_path('^auth/?', include('auth.urls', namespace='auth')),
]
wechat/auth/urls.py
代码如下:
from django.urls import path
from . import views
urlpatterns = [
path('', views.auth, name='auth'),
]
Step2:
编写wechat/auth/views.py
中的auth
视图函数
from django.shortcuts import render
from django.http import HttpResponse
from wechatpy.utils import check_signature
from wechatpy.exceptions import InvalidSignatureException
# Create your views here.
def auth(request):
sign = request.GET.get('signature')
echostr = request.GET.get('echostr')
timestamp = request.GET.get('timestamp')
nonce = request.GET.get('nonce')
token = '免费隧道里的authtoken'
try:
check_signature(token, sign, timestamp, nonce)
except InvalidSignatureException:
raise
return HttpResponse(echostr)
上述准备做好后,可以点击测试公众号里的提交,结果如下图:
三、课程小结
- 01、了解微信公众号
- 02、内网穿透
- 03、完成开发都验证