跳到主要内容

画布初始化 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 的代码示例供您参考,现包括 golangJavaNode 示例。

使用 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。