微信公众号登录系统
Node.js + Express + MySQL 微信登录与签到积分系统
点击右上角 「登录」 扫码关注公众号,发送「验证码」获取验证码即可登录。
GET 获取二维码
获取公众号二维码图片,供用户扫码关注。
GET
/api/qrcode
// 成功响应
{
"success": true,
"data": {
"qrcodeUrl": "/wechat-qrcode.jpg"
}
}
POST 验证码登录
6位验证码验证后返回 JWT Token。
POST
/api/login
// 请求 { "code": "123456" } // 成功响应 { "success": true, "data": { "token": "eyJhbGciOiJIUzI1NiIs...", "user": { "openid": "oV_xxx", "nickname": "昵称", "avatar": "..." } } } // 失败 { "success": false, "message": "验证码无效或已过期" }
GET 获取用户信息
通过 Token 获取当前用户信息。
GET
/api/me
需 Token
// 请求头 Authorization: Bearer <token> // 响应 { "success": true, "data": { "user": { "openid": "oV_xxx", "nickname": "昵称", "avatar": "..." } } }
POST 每日签到
每天签到 +1 积分。
POST
/api/checkin
需 Token
// 签到成功 { "success": true, "data": { "checked": true, "points": 1, "total": 5 } } // 已签到 { "success": false, "data": { "checked": false, "total": 5, "message": "今天已签到" } }
GET 查询积分
查询积分和今日签到状态。
GET
/api/points
需 Token
{ "success": true, "data": { "points": 5, "checkedToday": false } }
POST 退出登录
客户端清除 Token 即可。
POST
/api/logout
{ "success": true, "message": "已退出登录" }
GET 健康检查
检测服务状态。
GET
/api/health
{ "status": "ok", "mode": "production" }
数据表结构
users
| 字段 | 类型 | 说明 |
|---|---|---|
| openid | VARCHAR(128) | 微信 OpenID(唯一) |
| nickname | VARCHAR(64) | 昵称 |
| avatar | VARCHAR(512) | 头像 |
| points | INT | 积分 |
| role | VARCHAR(16) | user / admin |
verification_codes
| 字段 | 类型 | 说明 |
|---|---|---|
| code | VARCHAR(8) | 6位验证码 |
| openid | VARCHAR(128) | 用户 OpenID |
| status | ENUM | pending/used/expired |
| expires_at | DATETIME | 5分钟 |
checkins
| 字段 | 类型 | 说明 |
|---|---|---|
| openid | VARCHAR(128) | 用户 OpenID |
| checkin_date | DATE | 签到日期 |
| points_earned | INT | 获得积分 |