# 起步

完整的 SDK 由前端集成模块和服务端 Open API 组成。前端集成模块提供了文档编辑相关的功能,而 Open API 提供了文档存储、权限控制等功能。任何情况下,都不推荐前端直接访问 Open API,而是通过接入方自己的服务器进行转发。

# 准备工作

在调用 Open API 之前,你需要向讯飞文档 docs@iflytek.com 申请 AppIDAppSecretAppSecret 是你应用的唯一凭证,请妥善保管。我们强烈建议将 AppSecret 的使用放在服务端。如果意外泄露,请及时联系我们进行重置。

更多关于 AppIDAppSecret 的信息,可参考 名词解释

邮件应包括以下信息:

  1. 应用名称
  2. 应用类别
  3. 应用介绍

# 接入说明

讯飞文档 SDK 的前端提供了HTML5 页面接入的方式。

页面接入是通过 <iframe> 标签内嵌 HTML5 页面的方式实现,接入非常简单,具体请参考 前端集成

下面一起来体验一下页面接入的方式吧。

这一部分会涉及 Open API 的调用,详细内容请参考 Open API 接入指南

# 获取授权

通过你喜欢的方式发起一个请求,获取到 accessToken。注意,你应该在服务端发起此请求。

Node.js 为例:

点击查看
const request = require('request')
const options = {
  method: 'POST',
  url: 'https://openapi.iflydocs.com/user/v1/api/auth/token',
  headers: { 'Content-Type': 'application/json' },
  body: {
    appId: '6da37dd3',
    appSecret: '******',
    appUserId: '10001',
  },
  json: true,
}
request(options, (error, response, body) => {
  if (error) throw new Error(error)
  console.log(body)
})

或者通过 curl 命令:

点击查看
curl -X POST \
  https://openapi.iflydocs.com/user/v1/api/auth/token \
  -H 'Content-Type: application/json' \
  -d '{
	"appId": "6da37dd3",
	"appSecret": "******",
	"appUserId": "10001"
}'

如果一切正常,那么你将会得到类似下面的响应:

{
  "code": 0,
  "message": "正常",
  "data": {
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjIjoiRE9DU19URVNUIiwicyI6MTYxNDc1NTQzMDUxNSwidCI6IkEiLCJ1IjoiMTYxNDc1NDM1NzE0MiIsImlzcyI6ImF1dGgwIiwiZXhwIjoxNjE0ODQxODMwfQ.JYdrVYz8mL7t_D-hXMcV_eNqrapbl08N0FJY4jYkndw",
    "refreshToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjIjoiRE9DU19URVNUIiwicyI6MTYxNDc1NTQzMDUwNywidCI6IlIiLCJ1IjoiMTYxNDc1NDM1NzE0MiIsImlzcyI6ImF1dGgwIiwiZXhwIjoxNjE3MzQ3NDMwfQ.xHXPXD3h8PooYAe4B-t7Dq1fTKOHm7iB59G-uI0IimQ",
    "expiresIn": 86399,
    "expireTime": 1614841830515,
    "uid": 1614754357142,
    "appId": "6da37dd3",
    "appUserId": "10001"
  }
}

这样你就得到了一个 accessToken,更多的信息请参考 Open API 接入指南

# 创建文档

调用我们创建文档的接口,可以创建一篇新的文档。同样,在服务端,使用你喜欢的方式。

点击查看
const request = require('request')
const options = {
  method: 'POST',
  url: 'https://openapi.iflydocs.com/fs/fs/doc/create',
  headers: {
    Authorization:
      'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjIjoiRE9DU19URVNUIiwicyI6MTYxNDc1NTQzMDUxNSwidCI6IkEiLCJ1IjoiMTYxNDc1NDM1NzE0MiIsImlzcyI6ImF1dGgwIiwiZXhwIjoxNjE0ODQxODMwfQ.JYdrVYz8mL7t_D-hXMcV_eNqrapbl08N0FJY4jYkndw',
    'Content-Type': 'application/json',
  },
  body: {
    parentFid: '0',
    docType: 'note',
    spaceType: 1,
    name: 'Hello, World!',
  },
  json: true,
}
request(options, function(error, response, body) {
  if (error) throw new Error(error)
  console.log(body)
})

关注响应中的 fid,也就是文档的唯一标识,后面我们将通过 fid 打开文档编辑器。

{
  "code": 0,
  "message": "success",
  "data": {
    "status": 1,
    "fid": "1P3",
    "appId": "6da37dd3",
    "name": "Hello, World!",
    "parentFid": "0",
    "...": "..."
  }
}

# 生成 URL

我们有一个通用的编辑页面,通过传入文档 ID 和授权令牌就可以访问并编辑指定的文档。

基础 URL 为:https://open.iflydocs.com/v2/editor/editor.html

文档 ID 和授权令牌就是前面通过请求 Open API 得到的 fidaccessToken。把它们作为查询参数拼接到 URL 后面,你将得到:

https://open.iflydocs.com/v2/editor/editor.html?fid=1P3&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjIjoiRE9DU19URVNUIiwicyI6MTYxNDc1NTQzMDUxNSwidCI6IkEiLCJ1IjoiMTYxNDc1NDM1NzE0MiIsImlzcyI6ImF1dGgwIiwiZXhwIjoxNjE0ODQxODMwfQ.JYdrVYz8mL7t_D-hXMcV_eNqrapbl08N0FJY4jYkndw

提示

基础 URL 在不同的服务环境中有不同地址,具体请参考 服务环境

# 集成到应用

在你的页面中,添加以下代码:

<body>
  <iframe id="editor" frameborder="0" width="1024" height="768"></iframe>
  <script>
    document.getElementById('editor').src = `${上一步得到的URL}`
  </script>
</body>