生成和使用 Token

更新时间不可用

了解 Fastboard SDK 在不同平台上的生成和使用 Token 方式,包括接入流程、关键配置和平台差异。

本文介绍互动白板 Token 的生成和使用方式。

互动白板 Token,包括不同权限的 SDK Token、Room Token 和 Task Token,是互动白板服务对用户采用的一种鉴权方式。详见互动白板 Token 类型和权限。

生成 Token

你可以通过以下方式在业务服务端生成声网互动白板 Token:

生成 Token 时,你需要传入以下参数:

  • 访问密钥对(AK 和 SK)
  • 角色
  • 有效时长
  • 房间的 UUID (仅生成 Room Token 需要)
  • 转换任务的 UUID (仅生成 Task Token 需要)

获取访问密钥对

声网互动白板的访问密钥对包括 AK(Access Key)和 SK(Secret Key),可以通过以下方式获取:

  1. 在声网控制台左侧导航栏依次访问全部产品-拓展能力-互动白板。
  2. 在互动白板的功能配置-基本信息中,点击右侧按钮分别复制白板项目的 AppIdentifier、AK 和 SK,并保存到安全的位置。

警告

访问密钥对一旦泄露,会造成严重的安全问题。为提高项目的安全性,声网建议:

  • 绝对不要将访问密钥对发送给客户端,也不要将它们写死在代码里。确保只有业务服务器能从配置文件中读取访问密钥对。
  • 如果访问密钥对有泄露的风险,请及时联系技术支持,重新生成访问密钥对。

设置 Token 的角色

声网支持对 Token 设置 admin、writer 或 reader 角色,每种角色的 Token 具有的权限详见互动白板 Token 类型和权限。

注意

为提高业务安全,声网建议:

  • 尽量避免将权限很高的 Token 下发给客户端。
  • 对于必须下发到客户端的 Token,根据业务需要生成相应权限的 Token,尽量避免使用高级别的 Token 替代低级别的 Token。

设置 Token 的有效时长

声网支持对 Token 设置有效时长,取值为正整数,单位为毫秒。生成 Token 的 UTC 时间加上你设置的有效时长,即 Token 的过期时间。Token 过期后,用户将无法再使用该 Token 加入房间或访问互动白板服务。为确保业务可用性,你需要及时在 App 服务端生成新的 Token。

如果你不设置 Token 的有效时长或将有效时长设为 0,生成的 Token 将永不过期。

注意

  • 永不过期的 Token 可能为你的业务带来安全隐患。
  • 已经加入房间的用户不会因为 Token 过期被移出房间。

获取房间的 UUID

生成 Room Token 时,还需要传入房间的 UUID,即房间的全局唯一标识符,使 Room Token 与特定房间绑定。你可以通过以下方式获取房间的 UUID:

  • 如果房间已经存在,你可以调用获取房间列表查询已创建的房间列表。请求成功后,响应 Body 中包含查询房间的 UUID。
  • 如果房间尚未创建,你可以调用创建房间。请求成功后,响应 Body 中包含新创建房间的 UUID。

注意

  • 如果你调用互动白板 RESTful API 生成 Room Token,请求 Header 中的 SDK Token 必须和创建房间时使用的 SDK Token 相同。
  • 如果你在 App 服务端用代码生成 Room Token,传入的访问密钥对必须和创建房间时使用的 SDK Token 的访问密钥对相同。

获取转换任务的 UUID

生成 Task Token 时,还需要传入文档转换任务的 UUID,即文档转换任务的全局唯一标识符,使 Task Token 与特定的文档转换任务绑定。

要获取文档转换任务的 UUID, 你需要调用互动白板 RESTful API 发起文档转换。请求成功后,响应 Body 会包含转换任务的 UUID。

在 App 服务端生成 Token

声网在 GitHub 提供一个开源的 netless-token 仓库,支持使用 Java、JavaScript、TypeScript、C#、Go、PHP、Ruby 等语言在你的服务端部署生成 SDK Token、Room Token、Task Token。

本节展示如何使用声网提供的代码和你的访问密钥对(即 AK 和 SK)在业务服务端生成各种类型的互动白板 Token。

注意

为提高项目的安全性,请勿将 AK 和 SK 保存或发送给客户端。你需要将 AK 和 SK 保存在 App 服务端,并根据实际业务场景的需求,在 App 服务端签发所需的 Token。

开始前,请确保你的声网互动白板项目在控制台处于开启状态。

声网在 netless-token-master/Node/JavaScript 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 JavaScript 示例代码,其中:

  • index.js 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装最新版本的 Node.js LTS 版本。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Node/JavaScript 文件夹,运行如下命令安装 Node.js 依赖。

    Shell
    npm install
  3. 新建 sdktoken.js 文件,将以下代码复制到该文件:

    JavaScript
    const  { sdkToken, TokenPrefix } = require("./index");
    // 生成 SDK Token
    const netlessSDKToken = sdkToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            role: 0 // Token 的权限,取值包括 0(Admin),1(Writer),2(Reader)。
        }
    );
    console.log(netlessSDKToken)
  4. 运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

    Shell
    node sdktoken.js

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Node/JavaScript 文件夹,运行如下命令安装 Node.js 依赖。

    Shell
    npm install
  3. 新建 roomtoken.js 文件,将以下代码复制到该文件:

    JavaScript
    const  { roomToken, TokenPrefix } = require("./index");
    // 生成 Room Token
    const netlessRoomToken = roomToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            role: 1, // Token 的权限,取值包括 0(Admin),1(Writer),2(Reader)。
            uuid: "房间 UUID" // 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
        }
    );
    console.log(netlessRoomToken)
  4. 运行如下命令生成 Room Token。 生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

    Shell
    node roomtoken.js

生成 Task Token

你可以参考如下步骤,使用示例代码生成 Task Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Node/JavaScript 文件夹,运行如下命令安装 Node.js 依赖。

    Shell
    npm install
  3. 新建 tasktoken.js 文件,将以下代码复制到该文件:

    JavaScript
    const  { taskToken, TokenPrefix } = require("./index");
    // 生成 task token
    const netlessTaskToken = taskToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            role: 1,  // Token 的权限,取值包括 0(Admin),1(Writer),2(Reader)。
            uuid: "Task UUID" // 填入转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
        }
    );
    console.log(netlessTaskToken)
  4. 运行如下命令生成 Task Token。 生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

    Shell
    node tasktoken.js

声网在 netless-token-master/Node/TypeScript 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 TypeScript 示例代码,其中:

  • src/index.ts 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装最新版本的 Node.js LTS 版本。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Node/TypeScript 文件夹,运行如下命令安装 TypeScript。

    Shell
    npm install -g typescript
  3. 新建 sdktoken.ts 文件,将以下代码复制到该文件:

    TypeScript
    import { sdkToken, TokenPrefix } from "./src/index";
    const netlessSDKToken = sdkToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            role: TokenRole.Admin // Token 的权限,可选值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
        }
    );
    console.log(netlessSDKToken)
  4. 运行如下命令,生成相应的 sdktoken.js 文件。

    Shell
    tsc sdktoken.ts
  5. 运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

    Shell
    node sdktoken.js

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Node/TypeScript 文件夹,运行如下命令安装 TypeScript。

    Shell
    npm install -g typescript
  3. 新建 roomtoken.ts 文件,将以下代码复制到该文件:

    TypeScript
    import { roomToken, TokenPrefix } from "./src/index";
    const netlessRoomToken = roomToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            role: TokenRole.Admin, // Token 的权限,可选值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
            uuid: "房间的 UUID" // 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
        }
    );
    console.log(netlessRoomToken)
  4. 运行如下命令,生成相应的 roomtoken.js 文件。

    Shell
    tsc roomtoken.ts
  5. 运行如下命令生成 Room Token。 生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

    Shell
    node roomtoken.js

生成 Task Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Node/TypeScript 文件夹,运行如下命令安装 TypeScript。

    Shell
    npm install -g typescript
  3. 新建 tasktoken.ts 文件,将以下代码复制到该文件:

    TypeScript
    import { taskToken, TokenPrefix } from "./src/index";
    const netlessTaskToken = taskToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
                role: TokenRole.Writer,  // Token 的权限,可选值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
                uuid: "Task UUID" // 填入文档转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
            }
    );
    console.log(netlessTaskToken)
  4. 运行如下命令,生成相应的 tasktoken.js 文件。

    Shell
    tsc tasktoken.ts
  5. 运行如下命令生成 Task Token。 生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

    Shell
    node tasktoken.js

声网在 netless-token-master/Java 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 Java 示例代码,其中:

  • Token.java 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装 Java Development Kit。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Java 文件夹,在 Token.java 文件中添加如下代码:

    Java
    public static void main(String[] args) throws Exception {
        Map<String, String> map = new HashMap<>();
        // Token 的权限,取值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
        map.put("role", Token.TokenRole.Admin.getValue());
    
        String sdkToken = Token.sdkToken(
            "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
            "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
            1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
            map);
    
        System.out.println(sdkToken);
    }
  3. 进入 Token.java 所在路径,运行如下命令:

    Java
    javac Token.java
  4. 运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

    Java
    java Token

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Java 文件夹,在 Token.java 文件中添加如下代码:

    Java
    public static void main(String[] args) throws Exception {
        Map<String, String> map = new HashMap<>();
            // Token 的权限,可选值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
            map.put("role", Token.TokenRole.Reader.getValue());
            // 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
            map.put("uuid", "房间的 UUID");
    
        String roomToken = Token.roomToken(
            "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
            "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
            1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
            map);
    
        System.out.println(roomToken);
    }
  3. 进入 Token.java 所在路径,运行如下命令:

    Java
    javac Token.java
  4. 运行如下命令生成 Room Token。 生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

    Java
    java Token

生成 Task Token

你可以参考如下步骤,通过命令直接使用上述示例代码生成 Task Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/Java 文件夹,在 Token.java 文件中添加如下代码:

    Java
    public static void main(String[] args) throws Exception {
        Map<String, String> map = new HashMap<>();
            // Token 的权限,可选值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
            map.put("role", Token.TokenRole.Writer.getValue());
            // 填入文档转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
            map.put("uuid", "文档转换任务的 UUID");
    
        String taskToken = Token.taskToken(
            "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
            "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
            1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
            map);
    
        System.out.println(taskToken);
    }
  3. 进入 Token.java 所在路径,运行如下命令:

    Java
    javac Token.java
  4. 运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

    Java
    java Token

声网在 netless-token-master/golang 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 Golang 示例代码,其中:

  • token.go 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装最新版本的 Golang。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 新建 sdktoken.go 文件,将以下代码复制到该文件:

    Go
    package main
    import (
        "fmt"
        "../golang" // 将 ../golang 替换成你的 token 包所在路径。
    )
    func main() {
        c := token.SDKContent{
            // Token 的权限,可选值包括 token.AdminRole、token.ReaderRole、token.WriterRole。
            Role: token.AdminRole,
        }
        netlessSDKToken := token.SDKToken(
            "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
            "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
            1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
            &c,
        )
        fmt.Println(netlessSDKToken)
    }
  3. 进入 sdktoken.go 所在路径,运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

    Go
    go sdktoken.go

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 新建 roomtoken.go 文件,将以下代码复制到该文件:

    Go
    package main
    import (
        "fmt"
        "../golang" // 将 ../golang 替换成你的 token 包所在路径。
    )
    func main() {
        c := token.RoomContent{
            // Token 的权限,可选值包括 token.AdminRole、token.ReaderRole、token.WriterRole。
            Role: token.AdminRole,
            // 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
            Uuid: "房间的 uuid",
        } 
        netlessRoomToken := token.RoomToken(
            "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
            "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
            1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
            &c,
        )
        fmt.Println(netlessRoomToken)
    }
  3. 进入 roomtoken.go 所在路径,运行如下命令生成 Room Token。 生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

    Go
    go roomtoken.go

生成 Task Token

你可以参考如下步骤,使用示例代码生成 Task Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 新建 tasktoken.go 文件,将以下代码复制到该文件:

    Go
    package main
    import (
        "fmt"
        "../golang" // 将 ../golang 替换成你的 token 包所在路径。
    )
    func main() {
        c := token.TaskContent{
            // Token 的权限,可选值包括 token.AdminRole、token.ReaderRole、token.WriterRole。
            Role: token.WriterRole,
            // 填入文档转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
            Uuid: "Task UUID",
        }
        netlessTaskToken := token.TaskToken(
            "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
            "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
            1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
            &c,
        )
        fmt.Println(netlessTaskToken)
    }
  3. 进入 tasktoken.go 所在路径,运行如下命令生成 Task Token。 生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

    Go
    go tasktoken.go

声网在 netless-token-master/php 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 PHP 示例代码,其中:

  • Generate.php 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装 7.3 或以上版本的 PHP。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/php 文件夹,新建 sdktoken.php 文件,将以下代码复制到该文件:

    PHP
    <?php 
    // 引入 composer 管理的依赖包。
    require __DIR__ . '/vendor/autoload.php';
    use Netless\Token\Generate;
    $netlessToken = new Generate;
    $sdkToken = $netlessToken->sdkToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        array(
            "role" => Generate::AdminRole // Token 的权限,可选值包括 AdminRole、WriterRole、ReaderRole。
        )
    );
    echo $sdkToken;
  3. 运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

    PHP
    php sdktoken.php

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/php 文件夹,新建 roomtoken.php 文件,将以下代码复制到该文件:

    PHP
    <?php 
    // 引入 composer 管理的依赖包。
    require __DIR__ . '/vendor/autoload.php';
    use Netless\Token\Generate;
    $netlessToken = new Generate;
    $roomToken = $netlessToken->roomToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        array(
            "role" => Generate::ReaderRole, // Token 的权限,可选值包括 AdminRole、WriterRole、ReaderRole。
            "uuid" => "房间的 UUID" // 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
        )
    );
    echo $roomToken;
  3. 运行如下命令生成 Room Token。 生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

    PHP
    php roomtoken.php

生成 Task Token

你可以参考如下步骤,使用示例代码生成 Task Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/php 文件夹,新建 tasktoken.php 文件,将以下代码复制到该文件:

    PHP
    <?php
    // 引入 composer 管理的依赖包。
    require __DIR__ . '/vendor/autoload.php';
    use Netless\Token\Generate;
    $netlessToken = new Generate;
    $roomToken = $netlessToken->roomToken(
        "Your AK", // 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", // 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        array(
            "role" => Generate::ReaderRole, // Token 的权限,可选值包括 AdminRole、WriterRole、ReaderRole。
            "uuid" => "任务的 UUID" // 填入文档转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
        )
    );
    echo $sdkToken;
  3. 运行如下命令生成 Task Token。 生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

    PHP
    php tasktoken.php

声网在 netless-token-master/ruby 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 Ruby 示例代码,其中:

  • token.rb 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装 2.1 或以上版本的 Ruby。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/ruby 文件夹,运行以下命令,安装 uuidtools。

    Shell
    gem install uuidtools
  3. 在 ruby 文件夹,新建 sdktoken.rb 文件,将以下代码复制到该文件:

    Ruby
    require './lib/token.rb'
    sdktoken = NetlessToken.sdk_token(
        "Your AK", # 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", # 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, # Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            :role => NetlessToken::ROLE::ADMIN # Token 的权限,可选值包括 ADMIN、WRITER、READER。
        }
    )
    puts sdktoken
  4. 运行如下命令生成 SDK Token。 生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

    Ruby
    ruby sdktoken.rb

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/ruby 文件夹,运行以下命令,安装 uuidtools。

    Shell
    gem install uuidtools
  3. 在 ruby 文件夹,新建 roomtoken.rb 文件,将以下代码复制到该文件:

    Ruby
    require './lib/token.rb'
    roomtoken = NetlessToken.room_token(
        "Your AK", # 将 Your AK 替换成你从控制台获取的 AK。
        "Your SK", # 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, # Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            :role => NetlessToken::ROLE::ADMIN # Token 的权限,可选值包括 ADMIN、WRITER、READER。
            :uuid => "房间的 UUID" # 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
        }
    )
    puts roomtoken
  4. 运行如下命令生成 Room Token。 生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

    Ruby
    ruby roomtoken.rb

生成 Task Token

你可以参考如下步骤,使用示例代码生成 Task Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/ruby 文件夹,运行以下命令,安装 uuidtools。

    Shell
    gem install uuidtools
  3. 在 ruby 文件夹,新建 tasktoken.rb 文件,将以下代码复制到该文件:

    Ruby
    require './lib/token.rb'
    tasktoken = NetlessToken.task_token(
        "Your AK", # 将 Your AK 替换成你从控制台获取的 AK。
        "netless sk", # 将 Your SK 替换成你从控制台获取的 SK。
        1000 * 60 * 10, # Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
        {
            :role => NetlessToken::ROLE::ADMIN # Token 的权限,可选值包括 ADMIN、WRITER、READER。
            :uuid => "任务的 UUID" # 填入文档转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
        }
    )
    puts tasktoken
  4. 运行如下命令生成 Task Token。 生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

    Ruby
    ruby tasktoken.rb

声网在 netless-token-master/csharp 文件夹下提供了生成 SDK Token、Room Token、Task Token 的 C# 示例代码,其中:

  • Token.cs 文件包含用于生成互动白板 Token 的 API 源代码。
  • README.md 文件包含用于生成互动白板 Token 的示例代码。

开始前请确保已安装最新版本的 Visual Studio。

生成 SDK Token

你可以参考如下步骤,使用示例代码生成 SDK Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/csharp 文件夹,使用 Visual Studio 打开 csharp.sln 文件。

  3. 在 Program.cs 的示例代码中填入你的 AK,SK,Token 有效期和 Token 的角色。

    C#
    using System;
    using Netless;
    class Program
    {
        static void Main(string[] args)
        {
            string token = NetlessToken.SdkToken(
                // 将 ak 替换成你从控制台获取的 AK。
                "ak",
                // 将 sk 替换成你从控制台获取的 SK。
                "sk",
                // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
                1000 * 60 * 10,
                // Token 的权限,取值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
                new SdkContent(TokenRole.Admin)); 
            Console.WriteLine(token);
        }
    }
  4. 在 Visual Studio 中运行项目。生成的 Token 会显示在终端中,并带有 NETLESSSDK_ 前缀。

生成 Room Token

你可以参考如下步骤,使用示例代码生成 Room Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/csharp 文件夹,使用 Visual Studio 打开 csharp.sln 文件。

  3. 将 Program.cs 文件中的代码删除,并将以下示例代码复制到该文件中:

    C#
    using System;
    using Netless;
    class Program
    {
        static void Main(string[] args)
        {
            string token = NetlessToken.RoomToken(
                // 将 Your AK 替换成你从控制台获取的 AK。
                "ak",
                // 将 Your SK 替换成你从控制台获取的 SK。
                "sk",
                // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
                1000 * 60 * 10,
                // 设置 Token 的权限,取值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
                // 填入你的房间 UUID,可通过调用服务端创建房间 API 或获取房间列表 API 获取。
                new RoomContent(TokenRole.Admin, "房间的 UUID")
                ); 
            Console.WriteLine(token);
        }
    }
  4. 在 Visual Studio 中运行项目。生成的 Token 会显示在终端中,并带有 NETLESSROOM_ 前缀。

生成 Task Token

你可以参考如下步骤,使用示例代码生成 Task Token。

  1. 下载 netless-token 仓库或克隆至本地。

  2. 进入 netless-token-master/csharp 文件夹,使用 Visual Studio 打开 csharp.sln 文件。

  3. 将 Program.cs 文件中的代码删除,并将以下示例代码复制到该文件中:

    C#
    using System;
    using Netless;
    class Program
    {
        static void Main(string[] args)
        {
            string token = NetlessToken.TaskToken(
                // 将 Your AK 替换成你从控制台获取的 AK。
                "ak",
                // 将 Your SK 替换成你从控制台获取的 SK。
                "sk",
                // Token 有效时间,单位为毫秒。设为 0 时,表示永不过期。
                1000 * 60 * 10,
                // 设置 Token 的权限,取值包括 TokenRole.Admin,TokenRole.Writer,TokenRole.Reader。
                // 填入文档转换任务的 UUID,可通过调用服务端发起文档转换任务 API 获取。
                new TaskContent(TokenRole.Admin, "任务的 UUID")
                );
            Console.WriteLine(token);
        }
    }
  4. 在 Visual Studio 中运行项目。生成的 Token 会显示在终端中,并带有 NETLESSTASK_ 前缀。

使用 Token

你需要根据 App 客户端的请求,在 App 服务端生成相应权限的 Token。当 App 客户端或服务端使用获取的 Token 访问声网互动白板服务时,互动白板服务端会使用该 Token 校验其权限。

下面以 App 客户端请求加入房间和发起文档转换任务为例,介绍使用 Token 的步骤。

当 App 客户端请求加入房间时:

  1. App 服务端调用互动白板 RESTful API 或在本地用代码生成 SDK Token。
  2. App 服务端使用生成的 SDK Token 调用互动白板 RESTful API 创建房间。
  3. 声网互动白板服务端收到请求后,根据 Token 校验 App 服务端的权限。如果验证通过且成功创建房间,会向 App 服务端发送请求成功的响应。
  4. App 服务端读取响应 Body 中房间 UUID,调用互动白板 RESTful API 或在本地用代码生成 Room Token。
  5. App 服务端将 Room Token 和房间 UUID 下发给 App 客户端。
  6. App 客户端使用获取的 Room Token 和 房间 UUID 等信息加入互动白板房间。
  7. 声网互动白板服务端收到 App 客户端的请求后,会根据 Room Token 等信息校验 App 客户端的权限。如果验证通过,该 App 客户端可以加入互动白板房间并使用相应的服务。

当 App 客户端发起文档转换任务时:

  1. App 客户端发起文档转换任务时,App 服务端调用互动白板 RESTful API 或在本地用代码生成 SDK Token。
  2. App 服务端使用生成的 SDK Token 调用互动白板 RESTful API 创建文档转换任务。
  3. 声网互动白板服务端收到请求后,根据 Token 校验 App 服务端的权限。如果验证通过且成功创建文档转换任务,会向 App 服务端发送请求成功的响应。
  4. App 服务端读取响应 Body 中新建转换任务的 UUID,然后调用互动白板 RESTful API 或在本地用代码生成 Task Token。
  5. App 服务端使用 Task Token 和转换任务 UUID 调用互动白板 RESTful API 查询转换任务的进度。
  6. 声网互动白板服务端收到 App 服务端的请求后,会根据 Task Token 等信息校验用户权限。如果验证通过且请求成功,会向 App 服务端返回文档转换任务的进度。

相关信息

本节介绍使用互动白板 Token 的相关信息。

Token 失效

声网互动白板 Token 在下列情形会失效:

  • 禁用或删除项目。项目被禁用或删除后,与之关联的访问密钥对也会被禁用或删除,所有使用该访问密钥对生成的 Token 都会失效。
  • Token 过期。Token 过期后,用户将无法再使用该 Token 加入互动白板房间或使用互动白板服务。

Token 相关错误

在使用 Token 访问互动白板服务时,你可能会遇到以下报错:

错误信息说明
invalid format of token

Token 的数据格式错误。请检查 Token 数据格式是否有效:

  • Token 是否为 String 型。

  • Token 前后是否有多余空格或字符。

  • Token 的前缀是否正确:

    • SDK Token 的前缀为 NETLESSSDK_
    • Room Token 的前缀为 NETLESSROOM_
    • Task Token 的前缀为 NETLESSTASK_
expired tokenToken 已过期。请在 App 服务端调用互动白板 RESTful API 或用代码重新生成 Token。
invalid signature of tokenToken 的签名无效。当你使用在 App 服务端用代码生成的 Token 时,可能会遇到该报错。请确保使用正确的生成 Token 算法和代码。
unknown error未知错误。
token access role$ {发送过来的 token 的权限} forbiddenToken 的权限过低,例如,使用 reader 角色的 Token 请求 writer 角色的 Token 才能访问的服务。请确保发起的请求与使用的 Token 权限一致。
token access task forbidden禁止使用该 Task Token 访问 Task UUID 对应的文档转换任务。请确保请求中传入的 Task UUID 和 Task UUID 相匹配,即传入的 Task UUID 和生成该 Task Token 的 Task UUID 一致。
token access room forbidden禁止使用该 Room Token 访问 Room UUID 对应的互动白板房间。请确保请求中传入的 Room UUID 和 Room UUID 相匹配,即传入的 Room UUID 和生成该 Room Token 的 Room UUID 一致。
token access team forbidden项目被删除或禁用,导致 Token 失效。
表格内容超出当前宽度,可横向滚动查看更多列。