mirror of
https://github.com/ZeroCatDev/ClassworksKV.git
synced 2025-10-22 18:33:11 +00:00
132 lines
2.6 KiB
Markdown
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`
|