跳到主要内容

控制台管理客户端

业务后端通过 client 和应用凭证调用应用业务接口。本客户端用于租户管理,需要租户登录会话,HTTP 地址为 console-api。

ConsoleClient 提供 88 项控制台管理接口,使用租户登录令牌调用 console-api。当前章节适用于包含 ConsoleClient 的源码构建;公开包 0.1.5 不包含此客户端。

客户端与鉴权​

客户端服务凭证能力
clientedu server-apiappKey、appSecret;本地签名另需 appId用户、课堂、成员、权限、上课码、课件库、直播素材与诊断
whiteboardClient白板 server-api白板应用凭证白板私有房间、录制、截图、转码
consoleClientedu console-api租户 accessToken应用、账号及全部控制台管理接口

baseUrl 是 console-api 的部署入口,不含 /v1。本地服务默认使用 http://localhost:3101。SDK 不自动发现服务地址。accessToken 来自账号登录接口,与课堂用户 Token、白板 Room Token 不通用。

应用内操作把第一个参数 appId 写入 x-app-id。应用管理的 apps.get、apps.updateConfig、apps.updateWebhook 则按接口契约在查询参数或 JSON Body 中传 appId。应用归属由服务端校验。公共登录接口不发送租户令牌;控制台请求不发送应用密钥。

五种语言​

示例中的环境变量分别保存 console-api 地址、租户访问令牌和目标应用 ID。配置键按语言习惯命名,HTTP 字段始终使用 camelCase。

Node.js / TypeScript​

import { Eduskit } from '@eduskit/server-sdk';
const sdk = new Eduskit({
consoleClient: {
baseUrl: process.env.EDU_CONSOLE_URL!,
accessToken: process.env.EDU_TENANT_ACCESS_TOKEN!,
},
});
const c = sdk.consoleClient;
const apps = await c.apps.list();
const users = await c.users.list(process.env.EDU_APP_ID!, { page: 1, pageSize: 20 });

Python​

import os
from eduskit import Eduskit
sdk = Eduskit(console_client={
"base_url": os.environ["EDU_CONSOLE_URL"],
"access_token": os.environ["EDU_TENANT_ACCESS_TOKEN"],
})
c = sdk.console_client
apps = c.apps.list()
users = c.users.list(os.environ["EDU_APP_ID"], page=1, pageSize=20)

Java​

import com.eduskit.sdk.ConsoleClient;
import com.eduskit.sdk.ConsoleConfig;
import java.util.Map;

ConsoleClient c = new ConsoleClient(new ConsoleConfig(
System.getenv("EDU_CONSOLE_URL"),
System.getenv("EDU_TENANT_ACCESS_TOKEN")));
var apps = c.apps.list();
var users = c.users.list(System.getenv("EDU_APP_ID"), Map.of("page", 1, "pageSize", 20));

Go​

package main

import (
"context"
"log"
"os"
eduskit "github.com/eduskit/server-sdk-go"
)

func main() {
c := eduskit.NewConsoleClient(eduskit.ConsoleConfig{
BaseURL: os.Getenv("EDU_CONSOLE_URL"),
AccessToken: os.Getenv("EDU_TENANT_ACCESS_TOKEN"),
})
var apps []map[string]any
if err := c.Apps.List(context.Background(), &apps); err != nil { log.Fatal(err) }
var users map[string]any
if err := c.Users.List(context.Background(), os.Getenv("EDU_APP_ID"),
map[string]any{"page": 1, "pageSize": 20}, &users); err != nil { log.Fatal(err) }
}

PHP​

<?php
require __DIR__ . '/vendor/autoload.php';
$c = new \Eduskit\ConsoleClient([
'baseUrl' => getenv('EDU_CONSOLE_URL'),
'accessToken' => getenv('EDU_TENANT_ACCESS_TOKEN'),
]);
$apps = $c->apps->list();
$users = $c->users->list(getenv('EDU_APP_ID'), ['page' => 1, 'pageSize' => 20]);

会话、响应和错误​

auth.refresh({ refreshToken }) 返回新会话,调用方保存新 refreshToken 并用 setAccessToken(session.accessToken) 更新客户端。Python 方法为 set_access_token,Go 为 SetAccessToken。SDK 不自动刷新、持久化会话或重试请求。退出会话后可将客户端令牌设为空字符串。

成功调用返回响应信封中的 data。Go 把结果解码到最后一个 out 参数;传入 nil 可忽略响应。分页字段保留服务端原值。计费积分使用字符串,避免浮点计算丢失精度。

错误码含义
SDK_CLIENT_NOT_CONFIGURED未配置控制台客户端
SDK_CONSOLE_TOKEN_REQUIRED受保护接口缺少租户访问令牌
SDK_CONSOLE_APP_ID_REQUIRED应用内接口缺少 appId
SDK_QUERY_INVALID查询参数值不是字符串、数字或布尔值
SDK_UPLOAD_FAILED对象存储返回非 2xx 状态

错误保留 source=console、服务端错误码、HTTP 状态和 traceId。lastTraceId 仅表示共享客户端最近一次响应。业务服务根据错误与操作结果决定是否重试。

功能目录​

控制台功能SDK 接口文档
登录、手机号绑定、微信绑定、当前账号、退出账号与会话
应用创建、凭证、应用配置、回调与密钥轮换应用与回调
用户列表、搜索、建档、状态、Token 工具用户管理
排课、课堂详情、开课结课、学生名单、课件、直播源、诊断与导出课堂管理
上课码签发、领用记录、轮换和撤销上课码
活动列表、轨道、概览与详情课堂活动日志
课件上传、转码、预览、重试与删除课件库
直播文件上传、素材列表与删除直播素材
总览、趋势、课堂、进课质量、用量、异常仪表盘
钱包、权益、套餐、资源包、流水、用量、预留、估算、自动充值计费管理

数据字段见共享类型,完整流程见管理操作示例。