Columbia 课程日历订阅指南

了解如何获取 Vergil Token,将 Columbia 课表订阅到 Apple、Google 或 Outlook 日历,并安全更新或撤销订阅。

1. 获取 Vergil Token

登录 Vergil,完成学校账号登录和 Duo 验证。在浏览器开发者工具中打开 Application → Local Storage → https://vergil.columbia.edu,复制 access_token 的完整值(必填),也可复制同一会话的 refresh_token(可选),不要添加引号。如果找不到,可打开 Network 后重新登录,查看 token.oauth2 响应。

2. 创建日历订阅

回到创建页面,选择学期并填写 Access Token 和可选的 Refresh Token。两个输入框会在每次提交时清空,包括查找订阅,下次请求请重新粘贴。如有假期或停课,在“跳过不上课的日期”中每行填写一个 YYYY-MM-DD 日期。每个经验证的 UNI 只有一个日历,再次创建会更新已有日历。首次创建后,私密保存完整管理链接,包括 # 密钥。

3. 添加到日历 App

  • Apple Calendar: 使用“在日历 App 中打开”,或在 Mac 日历中选择“文件 → 新建日历订阅”。
  • Google Calendar: 在网页端选择“其他日历 → + → 通过网址”,粘贴 HTTPS 订阅链接。
  • Outlook: 选择“添加日历 → 从 Web 订阅”,粘贴 HTTPS 订阅链接。

4. 更新或撤销日历

增退选后,打开私密管理链接,提交新的 Access Token 和可选的 Refresh Token。更新所选学期只替换该学期快照,已导入的其他学期保留在同一日历中;不会自动获取所有往期学期。普通更新保留订阅地址,只有主动更换地址才会改变;读取失败保留原有快照。在管理页面撤销订阅可禁用链接并删除保存的课表。

打开已有日历

在首页输入新的 Access Token 和可选的 Refresh Token,点击“打开已有日历”。服务器向学校验证 UNI,再用其哈希匹配你唯一的日历;找到后自动打开,查找本身不会改动课程。查找后两个 Token 输入框都会清空,更新或更换订阅地址前需再次输入新的凭据。普通更新保留两种链接,更换订阅地址时管理链接不变。查找返回零个或一个归一化快照及其已导入学期历史,不返回学校 Token 或管理密钥;不保留明文 UNI 或学校 Token。原管理密钥无法从哈希恢复;遗失后可通过此入口查找和更新日历或更换订阅地址,但撤销仍需要保存的管理密钥。

更换订阅地址

订阅地址泄露或需要新地址时,可使用私密管理密钥,或新的 Access Token 和可选的 Refresh Token 更换。请确认提示:旧订阅地址立即返回 404,必须在日历 App 中使用新地址重新订阅。课程、已导入学期及管理链接不变。更换地址不会删除已缓存副本,也不会使泄露的管理密钥失效;撤销仍需要该密钥,并会删除日历。

刷新时间与隐私

Access Token 必填;Refresh Token 可选,仅在上游返回 HTTP 401 后用于同一次请求中最多一次刷新。Access Token 过期且未提供 Refresh Token 时返回 401,请获取新的 Access Token 后重新提交。服务不持久保存任何学校 Token(包括刷新后的 Token),也不会在后台同步课程。每次手动更新时 Token 会经过服务器,请仅使用可信部署。日历 App 决定刷新时间,更新可能不会立即显示。任何持有订阅链接的人都能查看课表,管理链接还可用于更新与撤销;请妥善保管链接和 Token。

创建订阅

创建或管理订阅需要启用 JavaScript。