VISH 应用——俄罗斯交通大学课表

面向所有学院学生和教职工的俄罗斯交通大学课表。按天和按周查看自己班级和任意教师的课表、此刻的空闲教室、教室、班级和教师的使用情况、课表变更通知以及课表人工智能助手。

学院

俄罗斯交通大学应用涵盖五个学院:高等工程学院、民航学院、道路管理学院、先进工程学院“高铁学院”和国际交通运输学院。在任何学院,班级课表和教师课表的查找方式都相同。

VISH 应用的功能
栏目
指南

身份验证:API 密钥与 OAuth

更新于 27.10.2026

在空气污染指数VISH,有三种方法可以访问该方法:不登录,使用API密钥和使用oauth令牌从“通过登录VISH”. 选择哪一个取决于 谁的 您正在阅读的数据和 谁 正在运行程序。 于2026年10月23日与摊位d1核对。

选择什么

无需登录API密钥OAuth令牌(“透过VISH”)
什么是开放数据:时间表、小组、教师、教室你的脚本,机器人,上传,仪表板您的网站或应用程序,包括其他人
代表谁不代表任何人代表您,在钥匙的权利范围内代表登录者,经其同意
如何是传送来的 —标题X-Api-Key: vish_…标题Authorization: Bearer …
什么是允许的公共方法GET钥匙和你的角色所允许的一切方法短列表中的只读
Срок—До даты в ключе (выпущенный себе — не дольше 730 дней)15 минут, дальше обновление токеном refresh
哪里有d1及制作d1及制作到目前为止只有d1

如果您不需要阅读任何个人内容,请不要登录:更少的秘密,更少的风险。

API密钥

密钥是在“应用程序中的开发人员页面。 为”更多信息,请参阅API和访问密钥页。 关键从vish_并在单独的标头中传递。:

bash
curl -H "X-Api-Key: $VISH_API_KEY" "$VISH_API/auth/me"
  • 带有密钥的请求就是请求 代表你,但仅在颁发密钥时指定的权限范围内。 什么不在集合中,密钥将被拒绝,即使你有权自己这样做。 如果您的角色的权限后来减少,密钥也会立即从下一个请求中丢失它们。
  • 密钥在标题中, 永远不要在地址里:地址在日志,浏览器历史记录和标题中结束Referer.
  • 如果钥匙和Authorization在请求中,密钥被计数。
  • 有些方法仅适用于应用程序中的人:您的密钥,个人笔记,同意,帐户删除。 你不能用钥匙打电话给他们-答案是403 SESSION_REQUIRED.
  • 重新发出出现在某处的钥匙“补发”按钮上的“开发人员”页:旧行立即停止工作。

检查密钥,看看它允许做什么。:

// Who the key acts as, and which permissions it carries.
const API = process.env.VISH_API ?? 'https://d1.vish-app.ru/api/v1'
const KEY = process.env.VISH_API_KEY
if (!KEY) throw new Error('set VISH_API_KEY')

const response = await fetch(`${API}/auth/me`, { headers: { 'X-Api-Key': KEY } })
const me = await response.json()
if (!response.ok || !me.id) throw new Error(`HTTP ${response.status}: ${JSON.stringify(me)}`)

console.log('role:', me.role)
console.log('permissions:', me.permissions.length ? me.permissions.join(', ') : '(none: public reads only)')

OAuth令牌

访问令牌允许您“登入VISH”:一个人登录到您的应用程序与帐户VISH并允许他们访问。 如何启用它是在登入VISH对于开发人员页。 以下是令牌与密钥的不同之处。:

  • 在header中传递Authorization: Bearer <access_token>.
  • 它起作用 代表登录者,但只为 阅读 并且仅适用于授予权限调用的方法。: schedule:read — GET /schedule, GET /schedule/subscriptions/mine, GET /schedule/{id}/subscription; notes:read — GET /schedule/{id}/notes. 任何其他方法将回答403 OAUTH_SCOPE_INSUFFICIENT.
  • 员工或管理员权限(如果有人拥有)不会转移到令牌。
  • 它的寿命为15分钟;一个新的接收与刷新令牌(30天,每次更新都会更改)。
  • 浏览器不允许您从另一个站点上的页面读取对此类请求(CORS)的响应:使用服务器中的令牌调用计划方法。 只有协议地址/oauth/…可从浏览器获得。
  • 一个人可以在禁用您的应用程序“设置” → “查阅资料” → “连接的令牌应用程序”从下一个请求停止工作。

登录到应用程序本身

申请表格VISH通过Telegram或MAX登录并接收其不记名令牌。 此输入适用于应用程序中的人员,而不适用于集成:不要尝试从脚本中重复它。 脚本需要一个密钥,而其他人的网站需要“登入VISH”.

登录错误

HTTPerror.code发生了什么事
401AUTH_REQUIRED该方法需要登录,但没有密钥或令牌
401UNAUTHORIZED密钥不正确,已撤销,已过期,或其所有者不再存在
401ACCESS_TOKEN_INVALIDBearer—令牌无效或过期-更新它
403SESSION_REQUIRED附录中的人类唯一方法
403OAUTH_SCOPE_INSUFFICIENTOAuth令牌不允许使用此方法
403FORBIDDEN缺少的权利-见访问权限(RBAC)

失败是什么样子的-没有真正的密钥,具有明显不正确的值:

// A made-up key and a made-up bearer token are both refused with 401.
const API = process.env.VISH_API ?? 'https://d1.vish-app.ru/api/v1'

const attempt = async (headers) => {
	const response = await fetch(`${API}/auth/me`, { headers })
	return { status: response.status, code: (await response.json()).error?.code }
}

const key = await attempt({ 'X-Api-Key': 'vish_not_a_real_key' })
const bearer = await attempt({ Authorization: 'Bearer not-a-real-token' })

if (key.status !== 401 || key.code !== 'UNAUTHORIZED') throw new Error(`key: ${JSON.stringify(key)}`)
if (bearer.status !== 401 || bearer.code !== 'ACCESS_TOKEN_INVALID') throw new Error(`bearer: ${JSON.stringify(bearer)}`)
console.log('made-up key   ->', key.status, key.code)
console.log('made-up token ->', bearer.status, bearer.code)

试试吧:下面的方法将在没有钥匙的情况下回答401,并将你的钥匙放在“API密钥”场,它会回答你的数据。 密钥仅保留在此选项卡中,不会保存在任何地方。

试一试请求

只有带锁的方法需要密钥。密钥只保存在本页:不会被存储,只作为本次请求的请求头发送,离开页面后即被清除。 如何获取密钥

验证:2026-10,PWA aa337c45,平台bff65fce._