预览服务
整体流程
接入须知
目前的产品能力是基于飞书文档转接的,产品形态与网盘有很大不同,因此当前能否适用到各业务场景还需要在对接体验过程中评估。
以下差异提醒当前已发现需注意:
- 文件允许能用户传阅和下载本地,无法关闭。浏览记录会显示在用户个人最近访问中
- 必须有飞书员工账号才能预览
- 浏览界面有飞书上边栏和侧边栏的样式。
- 支持文档格式:支持doc\ppt\xls新旧版本格式,不支持docm等衍生格式及wps格式。
接入预览中心前置
系统在接入预览中心前,需要联系预览中心开发人员,提供系统信息,申请系统预览授权,申请成功后会返回secretKey。
预览中心提供两种文件上传云空间的储存方式,公共应用云空间,自托管应用云空间(可根据业务需求,采用不同的储存方式)。
两种储存方式的优势:
自托管应用云空间
1.数据隔离性更强:为特定系统提供独立的配置空间,确保数据不会与其他系统混淆 。
2.配置专属化:可以针对不同系统设置不同的飞书应用配置,满足个性化需求 。
公共应用云空间
1.资源共享:多个系统可以共用同一套飞书应用配置,减少重复配置。
2.维护简便:统一管理公共配置,降低维护成本 。
3.默认兜底:当系统未配置专属空间时,自动使用公共配置,保证服务可用性 。
4.成本效益:避免每个系统都需要单独配置,节约资源配置成本(公共应用云空间数量固定,空间大小存在上限)。
4.用户上传文件到云空间说明:
用户上传的文件,路由到指定应用云空间时,先查询是否有租户自托管的应用,决定是在自托管的应用中路由还是公共应用中路由,再通过时间戳取余的方式,将文件上传到空间中。
申请预览中心系统授权
在申请系统预览授权时,接入方需要联系预览中心开发人员,并提供以下信息:
1.systemKey(接入唯一标识) 作用:用于唯—标识接入预览中心的业务系统(系统的system_name)。
2.appName(接入方描述) 作用:描述接入系统的名称或用途。
3.appCharger (接入方负责人) 作用:指定该系统接入的负责人姓名或联系方式。
4.previewType (预览类型) 作用:定义预览文档的访问范围,(取值:"0":组织内预览(仅限组织内部人员访问),"1":组织外预览(可对外部人员开放) )
完成申请后,预览中心开发人员会将系统生成的secretKey提供给接入方,用于文件预览时,调用相关接口的签名校验。
注意:同一systemKey(接入唯一标识)在预览中心中只会授权一次。
公共应用操作说明
预览中心默认会提供公共的飞书应用,文件预览时,直接调用接口上传文件即可。
自托管应用操作说明
自行申请飞书应用,同一系统可申请多个应用,申请后将应用数据提供给预览中心开发人员托管,文件预览时,调用接口上传文件,程序默认会将预览文件上传到托管应用空间上。
飞书开发者后台链接 https://open.feishu.cn/app?lang=zh-CN
应用托管流程:通过链接进入开发者后台->创建应用->权限管理(申请应用身份权限所有和云文档有关的权限)->应用发布->将应用信息提供给预览中心开发人员进行托管
应用托管需要提供以下信息:
1.appld:应用ID,用于标识飞书应用
2.appSecret:应用密钥,
3.systemName:系统名称,用于标识特定的自定义云空间
接口文档
测试
- 上传文件并获取文件的预览地址
https://api.hisense.com/#/principal/portDetails?id=59408
- 根据buid获取已上传文件的预览地址
https://api.hisense.com/#/principal/portDetails?id=59440
生产
冯晓东验收完成后提供
签名规则
注意: 通过融合集成平台订阅传递的userKey,不要添加到签名参数中。
Java工程|前端工程
非Java工程&非前端工程
算法实现: 算法实现文件
调用上传文件接口时,使用方法:
java
/**
* 生成文件上传请求签名
*
* @param secretKey 密钥
* @param method 请求方法
* @param urlParams URL参数
* @return MD5签名
*/
public static String generateSign(String secretKey, String method, Map<String, String> headerParams, Map<String, String> urlParams, MultipartFile file) throws IOException;
urlParams无需传值。
调用获取文件预览地址接口时,使用方法:
java
/**
* 生成常规请求签名
*
* @param secretKey 密钥
* @param method 请求方法(GET/POST等)
* @param urlParams URL参数
* @param body 请求体内容
* @return MD5签名
*/
public static String generateSign(String secretKey, String method, Map<String, String> headerParams, Map<String, String> urlParams, String body) throws IOException;
body不传,urlParams中只传buId即可。