跳到主要内容

PHP 服务端集成

安装​

PHP 8.1+,启用 cURL 扩展。把 classroom.php 放在 vendor/ 同级目录,配置环境变量后运行 php classroom.php。

composer require eduskit/server-sdk-php:0.1.5

Composer 包名是 eduskit/server-sdk-php,命名空间为 Eduskit。接口为同步调用;请求和返回数据使用关联数组。

创建课堂并签发学生凭证​

先配置服务端环境变量。本例使用独立老师和学生账号,头像 URL 为示例值,实际接入时替换为可访问的资源。每次运行都会创建新课堂;originId 仅使用户注册幂等。

<?php
require __DIR__ . '/vendor/autoload.php';

use Eduskit\Eduskit;
use Eduskit\EduskitError;

function required(string $name): string {
$value = getenv($name);
if ($value === false || trim($value) === '') {
throw new InvalidArgumentException('Missing ' . $name);
}
return trim($value);
}

function createDemoClassroom(): array {
$sdk = new Eduskit([
'timeoutMs' => 10000,
'client' => [
'baseUrl' => required('EDU_SERVER_URL'),
'appId' => required('EDU_APP_ID'),
'appKey' => required('EDU_APP_KEY'),
'appSecret' => required('EDU_APP_SECRET'),
],
]);
$teacher = $sdk->client->users->register([
'originId' => 'demo-teacher-001', 'nickname' => 'Teacher',
'avatar' => 'https://example.com/teacher.png',
]);
$student = $sdk->client->users->register([
'originId' => 'demo-student-001', 'nickname' => 'Student',
'avatar' => 'https://example.com/student.png',
]);
$classroom = $sdk->client->classrooms->create([
'name' => 'SDK integration',
'startsAt' => gmdate('Y-m-d\TH:i:s\Z', time() + 15 * 60),
'durationMinutes' => 60,
'teacherEduUserId' => $teacher['eduUserId'],
'studentEduUserIds' => [$student['eduUserId']],
'joinPolicy' => 'invite_only',
]);
$token = $sdk->client->auth->issueToken([
'eduUserId' => $student['eduUserId'], 'originId' => 'demo-student-001', 'expiresIn' => 3600,
]);
return [
'appId' => $token['appId'], 'classroomId' => $classroom['classroomId'],
'userId' => $student['eduUserId'], 'userToken' => $token['accessToken'],
'expiresAt' => $token['expiresAt'],
];
}

try {
$entry = createDemoClassroom();
echo $entry['classroomId'] . ' ' . $entry['userId'] . PHP_EOL;
} catch (EduskitError $error) {
error_log($error->errorCode . ' ' . $error->status . ' ' . $error->traceId);
exit(1);
}

将返回的 userToken 通过业务进课接口交给已通过鉴权的学生。正式系统在排课时创建课堂,在用户进课时签发 Token。

调用约定​

$sdk->client / $sdk->whiteboardClient。方法和 JSON 字段均使用 camelCase,timeoutMs 单位为毫秒。

成员、权限、课件及上下课方法见课堂 API。白板录制与转码见白板服务端集成。错误与排查说明 HTTP 失败、签名失败和重试边界。

应用业务与租户管理接口​

源码构建的 client 提供 50 个应用凭证 HTTP 路由,包含用户、课堂、课件库、直播素材与诊断。参数与返回结构见应用业务接口,完整流程见业务操作示例。独立的租户管理客户端 使用租户会话管理账号、应用、仪表盘和计费。新增方法需要对应版本的 server-api 与 SDK 源码构建;公开包 0.1.5 不包含这些新增方法。