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/jsonBody
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分钟有效期 |
401 | Token 无效或已过期 | 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"