前言:本文是學習網易微專業的《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、完成開發都驗證