mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-14 00:56:37 +08:00
优化,添加115接口文档
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
## 获取access_token
|
||||
|
||||
### 基本信息
|
||||
|
||||
| 属性 | 内容 |
|
||||
|:-----------|:---------------------------------|
|
||||
| 接口名称 | 获取access_token |
|
||||
| 接口版本 | v1.0 |
|
||||
| 接口路径 | /deviceCodeToToken |
|
||||
| 请求方法 | POST |
|
||||
| 接口状态 | 生产环境 |
|
||||
|
||||
### 接口说明
|
||||
|
||||
该接口用于在用户确认手机扫码授权后,使用设备码和 PKCE 原始校验值换取 `access_token`。
|
||||
|
||||
### 接口地址
|
||||
|
||||
```
|
||||
https://passportapi.115.com/open/deviceCodeToToken
|
||||
```
|
||||
|
||||
### 请求方式
|
||||
|
||||
```
|
||||
POST
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
```
|
||||
|
||||
### 认证方式
|
||||
|
||||
```
|
||||
OAuth 2.0 + PKCE
|
||||
```
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 约束/示例 |
|
||||
|:-----------|:-------|:---|:----|:--------------------------------|:---------------------------------------------------------------|
|
||||
| uid | string | 是 | - | 二维码 ID/设备码 | `DEVICE_CODE_PLACEHOLDER` |
|
||||
| code_verifier | string | 是 | - | 计算 `code_challenge` 时使用的原始随机字符串 | `IGKN6CJanWxCDPDhHZJrhswQdlcPBGLqExkhyujysXaQ4fJKBk_6dlPJo47s` |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```shell
|
||||
curl 'https://passportapi.115.com/open/deviceCodeToToken' \
|
||||
-H 'Content-Type: application/x-www-form-urlencoded' \
|
||||
--data-urlencode 'uid=DEVICE_CODE_PLACEHOLDER' \
|
||||
--data-urlencode 'code_verifier=IGKN6CJanWxCDPDhHZJrhswQdlcPBGLqExkhyujysXaQ4fJKBk_6dlPJo47s'
|
||||
```
|
||||
|
||||
### 响应字段说明
|
||||
|
||||
| 字段 | 类型 | 描述 |
|
||||
|:-------------------|:-------|:--------------------------------|
|
||||
| state | int | 状态码 |
|
||||
| code | int | 错误码 |
|
||||
| message | string | 响应信息 |
|
||||
| data | object | 响应数据 |
|
||||
| data.access_token | string | 访问资源接口的凭证 |
|
||||
| data.refresh_token | string | 刷新 `access_token` 的凭证,有效期 1 年 |
|
||||
| data.expires_in | int | `access_token` 有效期,单位为秒 |
|
||||
|
||||
### 响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"state": 1,
|
||||
"code": 0,
|
||||
"message": "",
|
||||
"data": {
|
||||
"access_token": "ACCESS_TOKEN_PLACEHOLDER",
|
||||
"refresh_token": "REFRESH_TOKEN_PLACEHOLDER",
|
||||
"expires_in": 7200
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
- `code_verifier` 必须与生成 `code_challenge` 时使用的原始值一致。
|
||||
- `access_token` 和 `refresh_token` 属于敏感凭证,不得写入公开仓库、客户端日志或公开沟通内容。
|
||||
|
||||
### 修改历史
|
||||
|
||||
| 修改时间 | 修改说明 |
|
||||
|:-----------------------------|:-----|
|
||||
| 2025年04月01日(周二) 00:00:00 | 创建文档 |
|
||||
@@ -0,0 +1,103 @@
|
||||
## 获取设备码和二维码内容
|
||||
|
||||
### 基本信息
|
||||
|
||||
| 属性 | 内容 |
|
||||
|:-----------|:---------------------------------|
|
||||
| 接口名称 | 获取设备码和二维码内容 |
|
||||
| 接口版本 | v1.0 |
|
||||
| 接口路径 | /authDeviceCode |
|
||||
| 请求方法 | POST |
|
||||
| 接口状态 | 生产环境 |
|
||||
|
||||
### 接口说明
|
||||
|
||||
该接口用于 OAuth 2.0 + PKCE 手机扫码授权流程的第一步,获取设备码和二维码内容。此模式适用于无后端服务的第三方客户端,无需提供 AppSecret。
|
||||
|
||||
第三方客户端需要根据响应中的 `data.qrcode` 生成二维码,供 115 客户端扫码授权。
|
||||
|
||||
### 接口地址
|
||||
|
||||
```
|
||||
https://passportapi.115.com/open/authDeviceCode
|
||||
```
|
||||
|
||||
### 请求方式
|
||||
|
||||
```
|
||||
POST
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
```
|
||||
|
||||
### 认证方式
|
||||
|
||||
```
|
||||
OAuth 2.0 + PKCE
|
||||
```
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 约束/示例 |
|
||||
|:---------------------|:-------|:---|:----|:--------------------------------|:-----------------------------------------------------------|
|
||||
| client_id | string | 是 | - | AppID | `YOUR_APP_ID` |
|
||||
| code_challenge | string | 是 | - | PKCE 挑战码 | `THHodGWg-FZfv8XYz7QArNGIK_aVomSHPldlSOTUtkw` |
|
||||
| code_challenge_method | string | 是 | - | `code_challenge` 的哈希算法,见下方枚举表格 | `sha256` |
|
||||
|
||||
#### 请求参数中的 code_challenge_method 字段枚举
|
||||
|
||||
| 值 | 说明 | 备注 |
|
||||
|:-------|:---------------------------|:---|
|
||||
| md5 | 使用 MD5 计算挑战码 | - |
|
||||
| sha1 | 使用 SHA-1 计算挑战码 | - |
|
||||
| sha256 | 使用 SHA-256 计算挑战码,推荐使用 | - |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```shell
|
||||
curl 'https://passportapi.115.com/open/authDeviceCode' \
|
||||
-H 'Content-Type: application/x-www-form-urlencoded' \
|
||||
--data-urlencode 'client_id=YOUR_APP_ID' \
|
||||
--data-urlencode 'code_challenge=THHodGWg-FZfv8XYz7QArNGIK_aVomSHPldlSOTUtkw' \
|
||||
--data-urlencode 'code_challenge_method=sha256'
|
||||
```
|
||||
|
||||
### 响应字段说明
|
||||
|
||||
| 字段 | 类型 | 描述 |
|
||||
|:-----------|:-----|:------------------------------------------|
|
||||
| state | int | 状态码 |
|
||||
| code | int | 错误码 |
|
||||
| message | string | 响应信息 |
|
||||
| data | object | 响应数据 |
|
||||
| data.uid | string | 设备码,轮询二维码状态时使用 |
|
||||
| data.time | int | 校验时间戳,轮询二维码状态时使用 |
|
||||
| data.qrcode | string | 二维码内容,第三方客户端需要据此生成设备二维码 |
|
||||
| data.sign | string | 校验签名,轮询二维码状态时使用 |
|
||||
|
||||
### 响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"state": 1,
|
||||
"code": 0,
|
||||
"message": "",
|
||||
"data": {
|
||||
"uid": "DEVICE_CODE_PLACEHOLDER",
|
||||
"time": 0,
|
||||
"qrcode": "QRCODE_CONTENT_PLACEHOLDER",
|
||||
"sign": "SIGN_PLACEHOLDER"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
- `code_verifier` 为长度 43 至 128 位的随机字符串。
|
||||
- `code_challenge` 的计算方式为 `url_safe(base64_encode(hash(code_verifier)))`。哈希结果按二进制数据参与 Base64 编码,算法需要与 `code_challenge_method` 一致。
|
||||
- AppID 等应用凭证请使用实际应用配置,不要在公开仓库或日志中记录敏感凭证。
|
||||
|
||||
### 修改历史
|
||||
|
||||
| 修改时间 | 修改说明 |
|
||||
|:-----------------------------|:-----|
|
||||
| 2025年04月01日(周二) 00:00:00 | 创建文档 |
|
||||
@@ -0,0 +1,89 @@
|
||||
## 轮询二维码状态
|
||||
|
||||
### 基本信息
|
||||
|
||||
| 属性 | 内容 |
|
||||
|:-----------|:---------------------------------|
|
||||
| 接口名称 | 轮询二维码状态 |
|
||||
| 接口版本 | v1.0 |
|
||||
| 接口路径 | /get/status/ |
|
||||
| 请求方法 | GET |
|
||||
| 接口状态 | 生产环境 |
|
||||
|
||||
### 接口说明
|
||||
|
||||
该接口用于长轮询设备二维码的扫码和授权状态。当二维码状态没有变化时,接口不会立即响应,直到请求超时或状态发生变化。
|
||||
|
||||
### 接口地址
|
||||
|
||||
```
|
||||
https://qrcodeapi.115.com/get/status/
|
||||
```
|
||||
|
||||
### 请求方式
|
||||
|
||||
```
|
||||
GET
|
||||
```
|
||||
|
||||
### 认证方式
|
||||
|
||||
```
|
||||
设备码参数校验
|
||||
```
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 约束/示例 |
|
||||
|:----|:-------|:---|:----|:------------------------------------|:------------------------|
|
||||
| uid | string | 是 | - | 二维码 ID/设备码,从 `/open/authDeviceCode` 的 `data.uid` 获取 | `DEVICE_CODE_PLACEHOLDER` |
|
||||
| time | int | 是 | - | 校验时间戳,从 `/open/authDeviceCode` 的 `data.time` 获取 | `0` |
|
||||
| sign | string | 是 | - | 校验签名,从 `/open/authDeviceCode` 的 `data.sign` 获取 | `SIGN_PLACEHOLDER` |
|
||||
|
||||
### 请求示例
|
||||
|
||||
```shell
|
||||
curl -G 'https://qrcodeapi.115.com/get/status/' \
|
||||
--data-urlencode 'uid=DEVICE_CODE_PLACEHOLDER' \
|
||||
--data-urlencode 'time=0' \
|
||||
--data-urlencode 'sign=SIGN_PLACEHOLDER'
|
||||
```
|
||||
|
||||
### 响应字段说明
|
||||
|
||||
| 字段 | 类型 | 描述 |
|
||||
|:------------|:-------|:-------------------------------------------|
|
||||
| state | int | 轮询状态:0-二维码无效,结束轮询;1-继续轮询 |
|
||||
| code | int | 错误码 |
|
||||
| message | string | 响应信息 |
|
||||
| data | object | 响应数据;115 客户端扫码或输入设备码后才有值 |
|
||||
| data.msg | string | 操作提示 |
|
||||
| data.status | int | 二维码状态:1-扫码成功,等待确认;2-确认登录或授权,结束轮询 |
|
||||
| data.version | string | 版本信息 |
|
||||
|
||||
### 响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"state": 1,
|
||||
"code": 0,
|
||||
"message": "",
|
||||
"data": {
|
||||
"msg": "OPERATION_MESSAGE_PLACEHOLDER",
|
||||
"status": 1,
|
||||
"version": "VERSION_PLACEHOLDER"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
- `state=0` 表示二维码无效,应结束轮询;`state=1` 表示继续轮询。
|
||||
- `data.status=1` 表示扫码成功并等待用户确认;`data.status=2` 表示用户已确认登录或授权,应结束轮询并进入换取访问凭证的步骤。
|
||||
- 长轮询超时不等同于授权失败,客户端可以按照自身网络策略重新发起请求。
|
||||
|
||||
### 修改历史
|
||||
|
||||
| 修改时间 | 修改说明 |
|
||||
|:-----------------------------|:-----|
|
||||
| 2025年04月01日(周二) 00:00:00 | 创建文档 |
|
||||
Reference in New Issue
Block a user