画布初始化 Token
更新时间 2025/01/26 05:13:55
什么是画布初始化 Token
初始化 Token 是一种基于 appSecret 和 画布初始化信息生成的动态密钥,它可以替代当前通过画布连接参数接入画布的模式。 您需要在自己的服务器上生成该 Token,并在画布初始化时传入 Token。英飞服务端会对该 Token 进行检测,来验证画布使用者的访问合法性。 在 Token 鉴权机制下,您无需关心画布连接参数的生成,只需要保证Token有效即可,进而大幅度降低您进行画布集成的复杂度。
注:
- 画布初始化 Token 机制自
@plaso-infi/whiteboard-sdk v0.7.2
版本起开始支持。- 画布初始化 Token 与画布 REST 服务 Access Token,及画布辅助 SDK 鉴权 Token 在使用场景及生成方式上均有不同,请注意区分并避免混用。
- Token 过期后,您将无法正常使用画布。建议您根据自己的业务需要,合理设置Token的有效期,并及时更换过期 Token。替换过期 Token 机制请参考 API 文档。
初始化流程
生成 Token
您可以在自己的服务端部署我们提供的代码生成Token,回传给前端应用。SDK初始化时作为参数传入,英飞服务端会根据Token中的信息校验画布使用者的访问合法性。
Token 中包含 queryString 中的以下参数即可:
参数名称
参数类型
required
参数解释
appId
string
是
应用 ID, 通过控制台中注册应用后获取
recordId
string
是
画布 ID,用以定位唯一的画布记录
loginName
string
是
画布使用者 userId,由开发者侧确定,在同一画布内允许使用相同 loginName 登入,但是会被视为是同一个用户
validTime
number
是
Token 有效时长,单位为秒
为方便您生成该 Token,我们提供了生成 Token 的代码示例供您参考,现包括 golang、Java 、Node 示例。
使用 Token 初始化画布
如果您已经完成了Token的生成,您可以将Token通过网络下发给您的前端应用,再经由您的前端应用注入英飞画布Web SDK并完成SDK的初始化动作。示例代码如下:
const fetchToken = () => {
// 从您的服务端获取到有效的Token
return fetch('...').then(...);
}
// 首先从服务器获取 Token
let token = await fetchToken();
const initPromise = await InfiWebSdk.getSdkInstance({
/** 画布初始化传入Token */
initToken: token,
...
});
const ins = initPromise.payload;
// 收到 token_will_expire 回调时,从服务器重新申请一个 Token,并调用 refreshToken 将新的 Token 传给 SDK
ins.on('token_will_expire', async () => {
let token = await fetchToken();
ins.refreshToken(token);
});
// 收到 token_did_expire 回调时,表示token已过期,需要及时重新申请一个 Token,并调用 refreshToken 将新的 Token 传给 SDK,此时画布可能不可用
ins.on('token_did_expire', async () => {
let token = await fetchToken();
ins.refreshToken(token);
});
在上述的代码示例中,您可以看到 Token 需要作为参数传入,来完成 SDK 初始化工作。
- 在 Token 过期前
10分钟
,Web SDK 会触发token_will_expire
回调。收到该回调后,前端应用需要从服务器获取新的 Token 并调用refreshToken
将新的 Token 传给 SDK。 - Token 过期后,Web SDK 会触发
token_did_expire
回调,此时画布会处于不可用状态,需要及时获取新的Token并调用 refreshToken 传给 SDK。