SuperAPI AI 工具集

iblai-api-studio-auth

编程与开发

查看项目

更新于 10-15 22:16

技能介绍

用途:Open edX Studio(CMS)没有令牌 API,所有编写端点都依赖 Django 会话 cookie 与 CSRF 令牌。本技能在用户自己控制的浏览器窗口中完成 Studio 与 LMS 登录,捕获会话 cookie,分别验证 Studio 和 LMS 会话,并写入 studio.env,供其他 Studio 技能调用。每台主机运行一次,会话约两周有效。

主要能力:运行 studio-login.mjs 打开 $STUDIO_URL/home 的浏览器窗口,由用户本人登录;脚本每秒轮询 studio_session_id 与 sessionid,验证后写文件、关闭浏览器,并输出连接主机、用户名、会话末四位与过期时间。写入 studio.env 的键包括 STUDIO_URL、LMS_URL、LMS_APP_URL、STUDIO_ORG、STUDIO_USERNAME、STUDIO_SESSION、STUDIO_CSRF、LMS_SESSION、LMS_CSRF、STUDIO_SESSION_EXPIRES;文件 chmod 600 并加入 .gitignore,不打印完整会话值。

使用方式:需 Node 18+,可用 Chrome/Edge 或 Playwright Chromium。预检命令 node .claude/skills/iblai-api-studio-auth/scripts/studio-login.mjs --check 会打印 studio: ok · lms: ok 并以 0 退出;文件缺失或会话过期退出 2。生产运行 node .claude/skills/iblai-api-studio-auth/scripts/studio-login.mjs,测试服务器加 --studio https://studio.learn.iblai.org。可用 --out、--lms、--lms-app、--profile、--timeout 参数。STUDIO_ORG 需手工设置一次,用于创建课程。从脚本读取时需去掉单引号,否则 Studio 返回 500 与 HTML 错误页。

调用约定:Studio 调用使用 -b "studio_session_id=$STUDIO_SESSION; csrftoken=$STUDIO_CSRF",加 X-CSRFToken、Origin、Referer,并必须带 Accept: application/json,否则返回 HTML。LMS 调用使用 sessionid 与 csrftoken。

限制:脚本从不接触密码,浏览器登录由用户完成;一个 studio.env 对应一个主机,切换生产与测试需重跑或使用两个文件;无头/CI 环境没有服务账号路径,组织级用户与角色管理应改用 /iblai-api-management,目录与选课数据用 /iblai-api-catalog;403 Permission denied 表示账号在该组织或课程上不是 staff/instructor。无浏览器时可让用户从 DevTools 复制 cookie 手工写入文件,但应避免粘贴到聊天。