Files
ruoyi-java/doc/WPS365集成使用说明.md
2026-01-15 16:22:00 +08:00

7.6 KiB
Raw Blame History

WPS365 在线表格API集成使用说明

概述

本功能实现了WPS365在线表格KSheet的完整API集成支持用户授权、文档查看和编辑等功能。

功能特性

  1. OAuth用户授权支持WPS365标准的OAuth 2.0授权流程
  2. Token管理自动保存和管理访问令牌支持Token刷新
  3. 文件管理:获取文件列表、文件信息
  4. 工作表管理:获取工作表列表、创建数据表
  5. 单元格编辑:支持读取和更新单元格数据,支持批量更新

配置说明

1. 在WPS365开放平台注册应用

  1. 访问 WPS365开放平台
  2. 注册成为服务商并创建应用
  3. 获取 app_idapp_key
  4. 配置授权回调地址(需要与配置文件中的 redirect-uri 一致)

1.1 配置应用权限(重要!)

在WPS365开放平台的应用配置中需要确保开启以下权限

基础权限

  • 文件读取权限 (file.readfile.readwrite)
  • 用户信息权限 (user.info)

在线表格KSheet相关权限

根据图片中的应用能力配置页面,如果需要读取在线表格内容,建议:

  1. 进入"应用能力"配置页面

    • 在左侧导航栏选择"应用能力" > "应用能力"
  2. 确保相关能力已开启

    • 虽然图片中显示的是"多维表格"插件相关能力,但读取在线表格内容主要依赖:
      • 文件读取权限(在"权限管理"中配置)
      • API调用权限确保应用有调用OpenAPI的权限
  3. 权限管理配置

    • 进入"开发配置" > "权限管理"
    • 确保添加了以下权限:
      • ksheet:read - 读取在线表格数据
      • ksheet:write - 写入在线表格数据(如果需要编辑)
      • file:read - 读取文件
      • file:write - 写入文件(如果需要编辑)
  4. 事件与回调配置

    • 进入"开发配置" > "事件与回调"
    • 配置回调地址:https://your-domain.com/wps365-callback
    • 确保回调地址验证通过支持GET和POST请求

2. 更新配置文件

编辑 application-dev.yml或对应的环境配置文件添加WPS365配置

wps365:
  # 应用ID从WPS365开放平台获取
  app-id: YOUR_APP_ID
  # 应用密钥从WPS365开放平台获取
  app-key: YOUR_APP_KEY
  # 授权回调地址需要在WPS365开放平台配置
  # 注意:使用 /wps365-callback 路径,避免前端路由拦截
  redirect-uri: https://your-domain.com/wps365-callback
  # API基础地址一般不需要修改
  api-base-url: https://open.wps.cn/api/v1
  # OAuth授权地址一般不需要修改
  oauth-url: https://open.wps.cn/oauth2/v1/authorize
  # 获取Token地址一般不需要修改
  token-url: https://open.wps.cn/oauth2/v1/token
  # 刷新Token地址一般不需要修改
  refresh-token-url: https://open.wps.cn/oauth2/v1/token

重要提示

  • 回调地址使用 /wps365-callback 而不是 /jarvis/wps365/oauth/callback
  • 这样可以避免前端路由拦截确保OAuth回调能正常访问
  • 在WPS365开放平台配置时只需配置域名jarvis.van333.cn回调路径会自动使用配置中的完整URL

API接口说明

1. 获取授权URL

接口: GET /jarvis/wps365/authUrl

参数:

  • state (可选): 状态参数用于防止CSRF攻击

返回: 授权URL用户需要访问此URL完成授权

示例:

// 前端调用
import { getWPS365AuthUrl } from '@/api/jarvis/wps365'

const response = await getWPS365AuthUrl()
const authUrl = response.data
// 打开授权页面
window.open(authUrl, '_blank')

2. OAuth回调处理

接口: GET /wps365-callback

参数:

  • code: 授权码由WPS365回调时自动传入
  • state: 状态参数(可选)
  • error: 错误码(授权失败时)
  • error_description: 错误描述(授权失败时)

说明:

  • 此接口处理WPS365的授权回调自动获取并保存Token
  • 返回HTML页面显示授权结果
  • 使用 /wps365-callback 路径避免前端路由拦截
  • 授权成功后会显示成功页面3秒后自动关闭窗口

3. 获取Token状态

接口: GET /jarvis/wps365/tokenStatus

参数:

  • userId: 用户ID

返回: Token状态信息是否授权、是否有效等

4. 刷新Token

接口: POST /jarvis/wps365/refreshToken

请求体:

{
  "refreshToken": "refresh_token_value"
}

5. 获取用户信息

接口: GET /jarvis/wps365/userInfo

参数:

  • userId: 用户ID

6. 获取文件列表

接口: GET /jarvis/wps365/files

参数:

  • userId: 用户ID
  • page: 页码默认1
  • pageSize: 每页数量默认20

7. 获取工作表列表

接口: GET /jarvis/wps365/sheets

参数:

  • userId: 用户ID
  • fileToken: 文件token

8. 读取单元格数据

接口: GET /jarvis/wps365/readCells

参数:

  • userId: 用户ID
  • fileToken: 文件token
  • sheetIdx: 工作表索引从0开始
  • range: 单元格范围A1:B10可选

9. 更新单元格数据

接口: POST /jarvis/wps365/updateCells

请求体:

{
  "userId": "user_id",
  "fileToken": "file_token",
  "sheetIdx": 0,
  "range": "A1:B2",
  "values": [
    ["值1", "值2"],
    ["值3", "值4"]
  ]
}

10. 批量更新单元格数据

接口: POST /jarvis/wps365/batchUpdateCells

请求体:

{
  "userId": "user_id",
  "fileToken": "file_token",
  "sheetIdx": 0,
  "updates": [
    {
      "range": "A1:B2",
      "values": [["值1", "值2"], ["值3", "值4"]]
    },
    {
      "range": "C1:D2",
      "values": [["值5", "值6"], ["值7", "值8"]]
    }
  ]
}

使用流程

1. 用户授权流程

  1. 前端调用 /jarvis/wps365/authUrl 获取授权URL
  2. 在新窗口打开授权URL用户完成授权
  3. WPS365会回调到配置的 redirect-uri,自动处理授权码
  4. 系统自动获取并保存Token到Redis

2. 编辑文档流程

  1. 调用 /jarvis/wps365/files 获取文件列表
  2. 选择要编辑的文件,调用 /jarvis/wps365/sheets 获取工作表列表
  3. 调用 /jarvis/wps365/readCells 读取现有数据
  4. 修改数据后,调用 /jarvis/wps365/updateCells 更新数据

3. Token刷新

  • Token过期前系统会自动尝试刷新
  • 也可以手动调用 /jarvis/wps365/refreshToken 刷新Token

注意事项

  1. 用户权限:只有文档的所有者或被授予编辑权限的用户才能编辑文档
  2. Token管理Token存储在Redis中有效期30天。过期后需要重新授权
  3. API限制注意WPS365的API调用频率限制
  4. 文件TokenWPS365使用 file_token 而不是文件ID需要从文件列表中获取

前端页面

访问 /jarvis/wps365 可以打开WPS365管理页面包含

  • 授权状态显示
  • 用户信息查看
  • 文件列表浏览
  • 在线编辑表格功能

错误处理

  • 未授权:返回错误提示,引导用户完成授权
  • Token过期自动尝试刷新Token刷新失败则提示重新授权
  • 权限不足返回错误码10003提示用户没有编辑权限

技术实现

  • 后端Spring Boot + RedisToken存储
  • 前端Vue.js + Element UI
  • HTTP客户端HttpURLConnection不使用代理直接连接

参考文档