1
1
mirror of https://github.com/ZeroCatDev/ClassworksKV.git synced 2025-10-22 18:33:11 +00:00
ClassworksKV/docs/device-auth-frontend.md
2025-10-02 12:07:50 +08:00

132 lines
2.6 KiB
Markdown

# 设备授权流程 - 前端接口文档
## 概述
类似 Device Authorization Grant 的授权流程,允许应用通过设备代码获取用户的访问令牌。
## 前端相关接口
### 1. 绑定令牌到设备代码
将用户的访问令牌绑定到应用提供的设备代码。
**接口地址:** `POST /auth/device/bind`
**请求头:**
```
Content-Type: application/json
X-Site-Key: your-site-key
```
**请求体:**
```json
{
"device_code": "1234-ABCD",
"token": "user-access-token-string"
}
```
**参数说明:**
- `device_code` (必填): 应用提供给用户的设备授权码,格式如 `1234-ABCD`
- `token` (必填): 用户在系统中已有的有效访问令牌
**成功响应:** `200 OK`
```json
{
"success": true,
"message": "令牌已成功绑定到设备代码"
}
```
**错误响应:**
400 Bad Request - 参数错误
```json
{
"statusCode": 400,
"message": "请提供 device_code 和 token"
}
```
400 Bad Request - 无效的令牌
```json
{
"statusCode": 400,
"message": "无效的令牌"
}
```
400 Bad Request - 设备代码不存在或已过期
```json
{
"statusCode": 400,
"message": "设备代码不存在或已过期"
}
```
---
### 2. 查询设备代码状态(可选,用于调试)
查询设备代码的当前状态,不会删除或修改数据。
**接口地址:** `GET /auth/device/status`
**请求头:**
```
X-Site-Key: your-site-key
```
**查询参数:**
- `device_code` (必填): 设备授权码
**请求示例:**
```
GET /auth/device/status?device_code=1234-ABCD
```
**成功响应:** `200 OK`
设备代码存在:
```json
{
"device_code": "1234-ABCD",
"exists": true,
"has_token": false,
"expires_in": 850,
"created_at": 1234567890000
}
```
设备代码不存在或已过期:
```json
{
"device_code": "1234-ABCD",
"exists": false,
"message": "设备代码不存在或已过期"
}
```
**字段说明:**
- `exists`: 设备代码是否存在且有效
- `has_token`: 是否已绑定令牌
- `expires_in`: 剩余有效时间(秒)
- `created_at`: 创建时间戳(毫秒)
---
## 使用流程
1. **应用端**生成设备代码并展示给用户
2. **用户**在前端页面输入设备代码
3. **前端**调用 `/auth/device/bind` 接口,将用户的 token 绑定到设备代码
4. **应用端**轮询获取到令牌,完成授权
## 注意事项
- 设备代码有效期为 15 分钟
- 令牌必须是系统中已存在的有效令牌
- 设备代码格式固定为 `XXXX-XXXX` (4位数字-4位字母/数字)
- 令牌获取后会从服务器内存中删除,只能获取一次
- 如果需要站点密钥,需在请求头中添加 `X-Site-Key`