API 文档

基于微信公众号的验证码登录系统 API 文档。所有 API 请求都发送到 https://wx.z-l.top

快速开始

1

关注公众号获取验证码

用户关注你的微信公众号,发送消息"验证码",系统自动回复6位数字验证码(有效期5分钟)

2

调用 API 验证登录

用户输入验证码后,你的网站调用 /api/auth/verify 接口进行验证

3

存储 Token 并保持登录状态

验证成功后,将返回的 Token 存储到 localStorage 或 Cookie,后续请求使用 Token 进行身份验证

认证方式

验证码登录

用户通过微信公众号获取6位验证码,在你的网站输入验证码进行登录。

Token 认证

登录成功后,API 会返回 JWT Token。后续请求需要在 Authorization header 中携带 Token:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Token 有效期

注意:当前版本 Token 有效期为 7天。 验证码有效期为 5分钟,且只能使用一次。

API 端点

POST/api/auth/verify

验证验证码(登录)

使用用户收到的6位验证码进行登录验证,验证成功返回 JWT Token 和用户信息。

请求参数

Headers
Content-Type: application/json
Body
code: string (required) - 6位验证码

返回参数

{
  "success": true,
  "message": "验证成功",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "openid": "oABC123...",
    "nickname": "用户的真实昵称",
    "avatar": "https://wx.qlogo.cn/...",
    "isAdmin": false,
    "adminLevel": 0
  }
}

// 失败响应
{
  "success": false,
  "message": "验证码错误或已过期"
}

示例

// 请求
POST /api/auth/verify
Content-Type: application/json

{
  "code": "123456"
}

// 成功响应
{
  "success": true,
  "message": "验证成功",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "openid": "oABC123...",
    "nickname": "用户的真实昵称",
    "avatar": "https://wx.qlogo.cn/...",
    "isAdmin": false,
    "adminLevel": 0
  }
}

// 失败响应
{
  "success": false,
  "message": "验证码错误或已过期"
}
GET/api/auth/user

获取用户信息

验证 Token 并获取当前登录用户的信息。

请求参数

Headers
Authorization: Bearer <token>
Body

无

返回参数

{
  "openid": "oABC123...",
  "nickname": "微信用户",
  "avatar": "https://...",
  "isAdmin": false,
  "adminLevel": 0
}

// 失败响应
{
  "error": "无效的token"
}

示例

// 请求
GET /api/auth/user
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

// 成功响应
{
  "openid": "oABC123...",
  "nickname": "微信用户",
  "avatar": "https://...",
  "isAdmin": false,
  "adminLevel": 0
}

// 失败响应
{
  "error": "无效的token"
}

错误码说明

状态码错误信息说明
400请求参数错误缺少必需参数或参数格式不正确
401验证码错误或已过期验证码不存在、已使用或已超过5分钟有效期
401Token 无效或已过期Authorization header 缺失或 Token 无效
429请求过于频繁触发限流,请稍后再试
500服务器内部错误服务器处理请求时发生错误

示例代码

JavaScript / Fetch

// 验证验证码(登录)
async function login(code) {
  const response = await fetch('https://wx.z-l.top/api/auth/verify', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ code }),
  });

  const data = await response.json();

  if (data.success) {
    // 存储 token
    localStorage.setItem('auth_token', data.token);
    localStorage.setItem('user_info', JSON.stringify(data.user));
    return data;
  } else {
    throw new Error(data.message);
  }
}

// 验证 Token
async function checkAuth() {
  const token = localStorage.getItem('auth_token');
  
  const response = await fetch('https://wx.z-l.top/api/auth/validate', {
    headers: {
      'Authorization': 'Bearer ' + token,
    },
  });

  return await response.json();
}

// 使用示例
login('123456')
  .then(data => console.log('登录成功', data))
  .catch(err => console.error('登录失败', err));

cURL

# 验证验证码
curl -X POST https://wx.z-l.top/api/auth/verify \
  -H "Content-Type: application/json" \
  -d '{"code": "123456"}'

# 验证 Token
curl https://wx.z-l.top/api/auth/validate \
  -H "Authorization: Bearer YOUR_TOKEN"