logo
当前页

使用 Kit Token 鉴权

概述

Kit Token 是 ZEGO UIKit 用于验证用户身份和权限的凭证。它将用于以下几个地方:

  • 用户即将加入的房间;
  • 房间中用户的唯一标识符(userID);
  • 默认用户名。

虽然 ZEGO UIKit 提供了在客户端应用程序上生成 Kit Token的方法,但这种方法可能会导致 APP 正式上线后面临安全风险。因此,ZEGO 建议开发者参考本文档在服务器上生成 Kit Token。

前提条件

在生成 Kit Token 之前,请确保:

实现流程

1 生成 Token

在获取 AppID 和 ServerSecret 之后,您可以根据业务需求在您的 APP 服务器或客户端 上定义验证规则。

Warning

出于业务安全考虑,ZEGO 建议您在 APP 服务器上生成 Token;否则,ServerSecret 可能遭受窃取。

ZEGO 在 GitHub/Gitee 提供了一个开源的 zego_server_assistant 插件,支持使用 Go、C++、Java、Objective-C、Python、PHP、.NET、Node.js 等语言,在开发者的服务端部署生成 Token。

zego_server_assistant 插件中用于服务端生成 Token 的各语言参考信息如下:

语言支持版本关键函数代码库地址基础鉴权 Token
GoGo 1.14.15 或以上版本GenerateToken04
C++C++ 11 或以上版本GenerateToken04
JavaJava 1.8 或以上版本generateToken04
PythonPython 3.6.8 或以上版本generate_token04
PHPPHP 5.6 或以上版本generateToken04
.NET.NET Framework 3.5 或以上版本GenerateToken04
Node.jsNode.js 8 或以上版本generateToken04

生成示例

以下以 PHP 为例介绍如何生成 Token。推荐使用 Composer 自动加载,即 Composer 的PSR-4自动加载。

  1. 将下载的包复制到项目的根目录中。以 /my_project/zego 目录为例,其中 /my_project/ 是根目录。

  2. vim /my_project/composer.json 文件中包含 psr-4 自动加载配置。

    Untitled
    {
        ...
        "autoload": {
            "psr-4": {
                "ZEGO\\": "zego/src/ZEGO"
            }
        }
        ...
    }
    
    1
    Copied!
  3. 运行 composer dump-autoload 命令,或者 composer dump-autoload -o(用于生产环境),或者 composer update 命令生成一个自动加载文件。

  4. /my_project/xxx.php 文件中使用以下代码,并将payload字段留空(因 Token 仅用于服务端 API 的简单权限验证)。

    Untitled
    require 'vendor/autoload.php';
    use ZEGO\ZegoServerAssistant;
    use ZEGO\ZegoErrorCodes;
    $appId = ; // 您的 AppID
    $userId = ''; // 用户 ID
    $secret = ''; // 您的ServerSecret
    $payload = '';
    $token = ZegoServerAssistant::generateToken04($appId,$userId,$secret,3600,$payload);
    if( $token->code == ZegoErrorCodes::success ){
    print_r(json_encode($token));
    }
    
    1
    Copied!

2 生成 Kit Token

在以下代码的 token 字段中填入生成的 Token,并填入其他业务参数并运行以下代码。

Untitled
//... 您的逻辑代码
fetch(
        `${youServerUrl}?userID=${userID}&expired_ts=86400`,
        {
            method: "GET",
        }
    )
.then((res) => res.json())
.then(({token})=>{
    const kitToken = ZegoUIKitPrebuilt.generateKitTokenForProduction(
        appID,
        token,
        roomID,
        userID,
        userName
    );
    const zp = ZegoUIKitPrebuilt.create(kitToken);
    //... 加入房间
})
1
Copied!

Previous

功能地图

Next

使用 HTML 脚本