微信公众号登录系统

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

字段类型说明
openidVARCHAR(128)微信 OpenID(唯一)
nicknameVARCHAR(64)昵称
avatarVARCHAR(512)头像
pointsINT积分
roleVARCHAR(16)user / admin

verification_codes

字段类型说明
codeVARCHAR(8)6位验证码
openidVARCHAR(128)用户 OpenID
statusENUMpending/used/expired
expires_atDATETIME5分钟

checkins

字段类型说明
openidVARCHAR(128)用户 OpenID
checkin_dateDATE签到日期
points_earnedINT获得积分