
# 其他第三方应用白板扫码保存
#### 应用场景
白板扫码配置为其他第三方应用扫码时，需要第三方应用实现该章节中定义的接口，搭建一个白板服务器，实现其应用的白板扫码保存功能。
#### 前提条件
无。
#### 接口概述
为了实现第三方应用扫码保存，需要第三方白板服务器实现以下5个接口：鉴权、获取文件码、上传文件、上报文件信息、获取二维码。
接口定义协议均默认为Https。响应成功约定状态码均返回200。
#### 请求URL
- 鉴权
  POST /v1/usg/sss/meeting-files/auth
  ```
  请求参数举例：
  {
    "username": "xxx",
    "password": "xxx"
  }
  ```
  需要在响应头中返回服务端token信息，后续扫码保存流程中会在请求头中携带相同信息，服务端需要按照请求头的token来控制权限。
  由于web页面用户名密码为非必填项，即可以不添加权限控制，可以选择不实现此接口。
  ```
  响应头Token举例：
  X-Access-Token："xxx"
  ```
  
 
- 获取文件码 POST /v1/usg/sss/meeting-files/generate-file-code
  ```
  请求头举例：
  X-Access-Token："xxx"
  ```
  第三方白板服务器需要返回信息及含义如下：
  1. 文件码（标记本次文件上传），
  2. 白板文件上传地址：本次扫码保存过程中，白板文件的上传地址。
  3. 缩略图上传地址：本次扫码保存过程中，缩略图的上传地址。
  4. PDF上传地址：本次扫码过程中，pdf文件的上传地址。
  ```
  响应消息体举例：
  {
      "code": 0, // 0成功，非0失败
      "description": "Success", // 描述
      "timestamp":1595746625096, // 时间戳
      "data": {
          // 文件码
          "fileCode": "967592"，
  // 白板上传地址
          "fileUploadUrl": "https://usg-sss-meeting-file.huaweicloud.com:443/tmp/f6e025af22e643cda393ac751dfd72e2.cwb",
          // 缩略图上传地址
  "thumbnailFileUploadUrl": "https://usg-sss-meeting-file.huaweicloud.com:443/tmp/f6e025af22e643cda393ac751dfd72e2.jpg",
          // Pdf文件上传地址
  "pdfFileUploadUrl": "https://usg-sss-meeting-file.huaweicloud.com:443/tmp/f6e025af22e643cda393ac751dfd72e2.pdf"
      },
  }
  ```
  

- 上传文件
  PUT 请求路径是文件码中返回的上传地址
  ```
  增加请求头：
  Content-Type：application/octet-stream
  ```
  

- 上报文件信息
  POST /v1/usg/sss/meeting-files/report-meeting-file-info
  ```
  请求参数举例：
  {
    "fileCode": "b2a17b4e575246cbbb4f7cccfa08364c", // 文件码，生成文件码接口获取
    "topic": "20200726_162506_meeting_record", // 无用字段，可填空
    "fileName": "20200726_162506_meeting_record.cwb", // 白板文件名
    "fileSize": 7621, // 白板文件大小
    "thumbnailFileName": " 20200726_162506_meeting_record.jpg ", // 缩略图文件名
    "thumbnailFileSize": 62881, // 缩略图文件大小
    "pdfFileName": " 20200726_162506_meeting_record.pdf ", // pdf文件名
    "pdfFileSize": 126235, // pdf文件大小
    "uploadResult": "SUCCESS" // 上传结果
  }
  ```
  需要在响应头中返回服务端token信息，后续扫码保存流程中会在请求头中携带相同信息，服务端需要按照请求头的token来控制权限。
  ```
  响应消息体举例：
  {
      "code": 0, // 0成功，非0失败
      "description": "Success", // 描述
      "timestamp": null, // 时间戳
      "data": null // 响应信息
  }
  ```
  

- 获取二维码
  POST /v1/usg/sss/meeting-files/generate-qr-code
  ```
  请求参数举例：
  {
       "action":"SAVE_MEETING_FILE"
       "data":{
             "fileCode":"b16cd192ba2a49edbeb56335ec494569"
       }
  }
  ```
  第三方白板服务器根据文件码，可以关联到已经上传到其服务器上的白板相关文件。
  该接口的返回值，需要将二维码图片BitMap对象经过Base64转码后得到的字符串，直接写在响应体中返回。
  
#### 错误码概述
各接口的错误码可以通过设置http状态码或接口返回值code字段非0，方便问题定位。
具体错误码需要依赖于第三方白板应用的具体实现。
