# 腾讯文档 API 修复说明 ## 修复时间 2025-11-05 ## 修复原因 原代码中使用的腾讯文档 API 基础 URL 不正确,导致接口调用失败。 ### 问题详情 1. **错误的 API 基础 URL**:使用了 `https://docs.qq.com/open/v3` 2. **正确的 API 基础 URL**:应该是 `https://docs.qq.com/openapi/v3`(注意是 `/openapi/v3` 而不是 `/open/v3`) ## 修复的文件列表 ### 1. 配置文件(2个) | 文件 | 修改内容 | |------|----------| | `ruoyi-admin/src/main/resources/application-dev.yml` | 第202行:`api-base-url: https://docs.qq.com/open/v3` → `https://docs.qq.com/openapi/v3` | | `ruoyi-admin/src/main/resources/application-prod.yml` | 第202行:`api-base-url: https://docs.qq.com/open/v3` → `https://docs.qq.com/openapi/v3` | ### 2. Java 配置类(1个) | 文件 | 修改内容 | |------|----------| | `ruoyi-system/src/main/java/com/ruoyi/jarvis/config/TencentDocConfig.java` | 第33行:更新默认 API 基础地址为 `https://docs.qq.com/openapi/v3`,并添加注释说明 | ### 3. Java 工具类(1个) | 文件 | 修改内容 | |------|----------| | `ruoyi-system/src/main/java/com/ruoyi/jarvis/util/TencentDocApiUtil.java` | 更新所有方法的注释和文档说明,确保 API 路径格式正确 | ## 详细修改说明 ### TencentDocConfig.java ```java // 修改前 private String apiBaseUrl = "https://docs.qq.com/open/v3"; // 修改后 /** API基础地址 - V3版本(注意:是 /openapi/v3 不是 /open/v3) */ private String apiBaseUrl = "https://docs.qq.com/openapi/v3"; ``` ### TencentDocApiUtil.java 修改的方法 #### 1. readSheetData() - 读取表格数据 - **修改前**:注释中标注路径为 `/open/v3/spreadsheets/{id}/sheets/{sheetId}/ranges/{range}` - **修改后**:更新为 `/openapi/v3/spreadsheets/{id}/sheets/{sheetId}/ranges/{range}` - **实际生成的完整URL**:`https://docs.qq.com/openapi/v3/spreadsheets/{id}/sheets/{sheetId}/ranges/{range}` #### 2. writeSheetData() - 写入表格数据 - **修改前**:注释中标注路径为 `/open/v3/spreadsheets/{id}/sheets/{sheetId}/ranges/{range}` - **修改后**:更新为 `/openapi/v3/spreadsheets/{id}/sheets/{sheetId}/ranges/{range}` - **增强**:添加了关于 V3 API 数据格式的详细说明,参考官方文档 - **实际生成的完整URL**:`https://docs.qq.com/openapi/v3/spreadsheets/{id}/sheets/{sheetId}/ranges/{range}` #### 3. appendSheetData() - 追加表格数据 - **修改前**:注释中标注路径为 `/open/v3/spreadsheets/{id}/sheets/{sheetId}` - **修改后**:更新为 `/openapi/v3/spreadsheets/{id}/sheets/{sheetId}` - **增强**:添加了关于工作表信息返回格式的详细说明 - **实际生成的完整URL**:`https://docs.qq.com/openapi/v3/spreadsheets/{id}/sheets/{sheetId}` #### 4. getFileInfo() - 获取文件信息 - **修改前**:注释中标注路径为 `/open/v3/spreadsheets/{id}` - **修改后**:更新为 `/openapi/v3/spreadsheets/{id}` - **增强**:添加了返回格式示例说明 - **实际生成的完整URL**:`https://docs.qq.com/openapi/v3/spreadsheets/{id}` #### 5. getSheetList() - 获取工作表列表 - **修改前**:注释中标注路径为 `/open/v3/spreadsheets/{id}/sheets` - **修改后**:更新为 `/openapi/v3/spreadsheets/{id}/sheets` - **增强**:添加了返回格式示例说明 - **实际生成的完整URL**:`https://docs.qq.com/openapi/v3/spreadsheets/{id}/sheets` ### application-dev.yml & application-prod.yml ```yaml # 修改前 api-base-url: https://docs.qq.com/open/v3 # 修改后 # 注意:正确的URL是 /openapi/v3 而不是 /open/v3 api-base-url: https://docs.qq.com/openapi/v3 ``` ## V3 API 接口路径对照表 | 功能 | 正确的完整 URL | |------|---------------| | 读取表格数据 | `https://docs.qq.com/openapi/v3/spreadsheets/{fileId}/sheets/{sheetId}/ranges/{range}` | | 写入表格数据 | `https://docs.qq.com/openapi/v3/spreadsheets/{fileId}/sheets/{sheetId}/ranges/{range}` | | 获取工作表信息 | `https://docs.qq.com/openapi/v3/spreadsheets/{fileId}/sheets/{sheetId}` | | 获取文件信息 | `https://docs.qq.com/openapi/v3/spreadsheets/{fileId}` | | 获取工作表列表 | `https://docs.qq.com/openapi/v3/spreadsheets/{fileId}/sheets` | | 获取用户信息 | `https://docs.qq.com/oauth/v2/userinfo` | ## 鉴权方式验证 ✅ 当前代码中的鉴权实现是**正确的**,使用标准的 Bearer Token 方式: ```java conn.setRequestProperty("Authorization", "Bearer " + accessToken); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Accept", "application/json"); ``` ## 数据格式说明 ### 写入数据格式 根据腾讯文档 V3 API 规范,支持两种数据格式: #### 1. 简单文本数组(当前实现) ```json { "values": [ ["值1", "值2"], ["值3", "值4"] ] } ``` #### 2. 完整 CellData 结构(用于复杂格式) ```json { "data": [{ "startRow": 0, "startColumn": 0, "rows": [{ "values": [{ "cellValue": { "text": "单元格内容" }, "dataType": "DATA_TYPE_UNSPECIFIED", "cellFormat": { "textFormat": { "font": "SimSun", "fontSize": 12 } } }] }] }] } ``` 当前代码使用简单文本数组格式,适用于大多数场景。如需使用复杂格式(带样式、颜色等),可以在调用时传入完整的 CellData 结构。 ## 参考文档 - [腾讯文档 V3 API - 在线表格资源描述](https://docs.qq.com/open/document/app/openapi/v3/sheet/model/spreadsheet.html) - [腾讯文档开放平台官方文档](https://docs.qq.com/open/document/app/) - [OAuth2.0 用户授权](https://docs.qq.com/open/document/app/oauth2/authorize.html) - [批量更新接口](https://docs.qq.com/open/document/app/openapi/v3/sheet/batchUpdate.html) ## 注意事项 1. **重要**:所有使用腾讯文档 API 的地方必须使用 `/openapi/v3` 而不是 `/open/v3` 2. 配置文件更新后需要重启应用才能生效 3. OAuth 授权接口路径保持不变:`https://docs.qq.com/oauth/v2/` 4. 如果 API 调用仍然失败,请检查: - Access Token 是否有效 - 文件 ID 和工作表 ID 是否正确 - 网络连接是否正常 - 是否有相关权限 ## 测试建议 修复后建议测试以下功能: 1. ✅ 获取授权 URL 2. ✅ OAuth 回调处理 3. ✅ 读取表格数据 4. ✅ 写入表格数据 5. ✅ 追加表格数据 6. ✅ 获取工作表列表 7. ✅ 获取文件信息 ## 验证结果 - ✅ 所有配置文件已更新 - ✅ 所有 Java 代码已更新 - ✅ 所有注释和文档已更新 - ✅ 无语法错误(Linter 检查通过) - ✅ API 路径格式符合 V3 规范 --- **修复完成时间**:2025-11-05 **修复人员**:AI Assistant **验证状态**:✅ 已完成