快速开始
本项目基于 Vue 3、TypeScript、Vite、WeUI 和 weui.js,为微信服务号提供网页授权回调中转。它接收微信返回的 code/state,再返回业务网页或小程序,不负责换取 access_token,也不创建业务登录会话。
本地运行
准备 Node.js 22.12+、pnpm 10.33.0,在项目根目录执行:
sh
pnpm install --frozen-lockfile
pnpm dev根目录创建 .env.development.local,生产构建使用 .env.production.local:
dotenv
VITE_AUTH_CALLBACK_ORIGIN=https://webauth.wx.ax3672.cn
VITE_ALLOWED_WEB_ORIGINS=
VITE_ALLOWED_MINI_PATHS=两个允许列表为空时不额外限制目标;需要限制时用英文逗号分隔精确的 HTTPS origin 或小程序页面路径。变量在构建时注入,修改后需要重新构建。不要将 AppSecret 或上传管理员密钥放入 VITE_ 变量。
VITE_AUTH_CALLBACK_ORIGIN 用于构造授权链接,调用方仍需使用正确域名和服务号 AppID。详细约束见授权接入协议。
页面入口
| 路径 | 用途 |
|---|---|
/ | 项目说明及校验文件上传入口 |
/callback/web?scene=1&origin=... | 微信内网页回调,返回原网站 |
/callback/mini?scene=2&minipath=... | 小程序 web-view 回调,返回原生页面 |
/admin/verification | 管理员上传业务域名校验文件 |
回调由微信追加 code 和 state,授权期间仅显示 loading。上传页支持 secret 查询参数自动填充,读取后清除地址栏参数;具体使用及密钥管理见上传服务。
构建与部署
sh
pnpm test
pnpm build- 授权前端产物:
dist/,按照宝塔站点部署发布。 - 上传后端:
server/verification-upload.mjs,按照宝塔 Node 项目部署单独启动。 - 文档站:
pnpm docs:build,按照文档站发布部署。
三者独立更新。发布前端不会启动后端,也不会更新文档站。
代码结构
src/App.vue:默认首页及页面选择。src/auth/entry.ts:入口解析与回调分流。src/auth/protocol.ts:授权链接构造及参数验证。src/pages/VerificationUpload.vue:文件上传管理页面。server/verification-upload.mjs:管理员认证及 shared 文件写入。scripts/:SSH 发布、回滚和共享验证目录维护。docs/:VitePress 文档源文件,修改 Markdown 即可更新内容。
