Todosync:利用Github Actions自动将Canvas内容同步至Microsoft Todo

不想错过DDL?Canvas LMS的邮件推送功能不够直观?

Microsoft Todo和Canvas的联动或许是你的不二之选。

前言

在了解到这个工具之前,我一直受canvas反馈功能不够全面的困扰。虽然有日历馈送,但并不是每个老师每个作业都会设置DDL,而且完成之后也没法在日历上删除。直到有一天,我在水源社区刷到了这个帖:

【TodoSync】自动将 Canvas 的作业、公告等同步到 Microsoft Todo

https://shuiyuan.sjtu.edu.cn/uploads/default/original/3X/5/3/530e03969302cc4264af826e18d91d652d872b03.png


我超这可太牛逼了。

我本人一直是Todolist的重度使用者,感觉失去了Todolist就没有了方向。在使用了iOS系统的大量app,甚至氪了近200买一些app的会员之后,我负责任地说Microsoft Todo,不仅免费,而且用起来最顺手。而这款Todosync对我来说,简直就是专业对口。

使用教程

Tip
本教程供电脑小白食用,有基础可直接移步原教程。本教程部分截图资源来自原教程。
注意
本教程仅适用于Windows10或11系统

注册Github账号(已有可跳过)

都2022年了不会还有人没注册Gayhub罢

前往Github官网,点击首页的``Sign up for Github`,然后依次输入你的邮件地址创建密码创建用户名,最后y/n是是否接收邮件推送。

然后完成邮箱验证,就注册成功了。

配置Canvas Token

创建Fork

前往Todosync的仓库,点击右上角的Fork复制整个仓库

然后会进入下图这个界面(本教程采用小号演示,add-verb不是我的常用Github账号)

注意
记得取消勾选Copy the master branch only

取消勾选后即可Create fork

image-20221013085923967

生成Canvas许可证

  • 登录canvas,进入账户-设置

  • 点击“创建新访问许可证”

    image-20221013090333303

  • “用途”随意填写,“过期”留空,这样不需要重新创建

    image-20221013090535952

  • 点击“生成令牌“,然后复制那一串令牌。

    https://camo.githubusercontent.com/f20e44578ebcbff47866af3c90394a169b2c3cf7e23931fb4766694bf3fc8127/68747470733a2f2f73322e6c6f6c692e6e65742f323032322f30382f32312f4579656a3935765933634373565a542e706e67

创建Action Secret

Tip
此部分在刚才fork的仓库进行。请进入你复制的仓库,而不是作者原来的仓库。
  • 来到你自己的仓库,这时你的仓库标题下应该会有一行小字forked from 1357310795/TodoSync

  • 进入Settings

    image-20221013091241186

  • 选择“Secrets - Actions”,点击“New repository secret” https://camo.githubusercontent.com/b79cd58d3c03c6a1320d31fe076888bd671ac9eacb9974e4f639a9509b1da42f/68747470733a2f2f73322e6c6f6c692e6e65742f323032322f30382f32312f4661764d4b6a70346c4759496836672e706e67

  • NameCANVAS_TOKENValue为刚才复制的令牌,完成后点击Add Secret

    img

  • 完成后如图所示

    img

配置Graph Token

  • 下载这个生成工具。此链接是1.0版本,需要最新版本请前往Releases界面下载。浏览器可能会提示软件不安全,那就坚持保留。我们要相信学长。
令牌生成工具 https://github.com/1357310795/TodoSync/releases/download/v1.0/TodoSynchronizer.QuickTool.exe
  • 打开下载的工具,点击“获取 Graph 认证”,跳转到浏览器

  • 授权 MyTodoApp。如果浏览器没有登录Microsoft账号,可能需要先登录。

Tip
请务必核对权限与下图是否一致,以及Microsoft账号是否与Microsoft Todo使用的账号相同。

img

  • 完成后,回到程序,系统会自动生成秘钥,点击确定即可。完成后不要关闭程序

    img

  • 前往自己fork的仓库,如图所示切换到graphtoken分支

    img

  • 编辑 graphtoken.asc 文件

    img

  • 复制程序中的一大串非中文字符,粘贴进来(把原先的覆盖掉,注意不要有多余的换行),直接Commit Changes

Tip
注意和下一步区分中文字符串和非中文字符串,两处填写内容不同,此处为凭证,下面是秘钥。

img

  • 再次到Settings的“Secrets”里,创建一个新条目,“Name”为“KEY”,“Value”为程序中的一串中文字符

    img

  • 点击Add secret,完成Graph Token的创建

启动定时任务(Github Actions)

  • 自己fork的仓库,点击Actions选项卡,点击绿色按钮启用。

    img

  • 在左侧选择“TodoSync”,右侧点击“Run workflow”

    img

  • 此时workflow已经开始运行,一分钟左右就能在你的Microsoft Todo里面看到Canvas的待办事项了。

  • 刷新页面后可以进入Action查看程序运行详情,如果遇到报错,可以在评论区交流。

  • 编辑仓库根目录下的 config.yaml 文件,可以调整同步程序设置

    img

常见问题

Tip
转自原教程,真的有问题还是要去找原作者。

Fork 的仓库能不能设置为 Private?

对于公开仓库,GitHub Actions 是免费的;而对于私有仓库,GitHub Actions 每个月有 2000 分钟的免费额度,超出会有巨额收费(在这里看用量)。本项目每次运行大约需要 2min,也就是说每个月顶多能运行 1000 次,可能不够用。强烈建议保持仓库为公开状态

为什么步骤这么复杂?我的账号、Token 安全吗?

复杂的配置步骤就是为了保证账号和令牌的安全性。Canvas Token 的安全性由 GitHub 保证,Graph Token 的安全性由 AES 算法保证。

为什么不直接把 Graph 的 AccessToken/RefreshToken 保存到 Secrets,像 Canvas Token 那样?

AccessToken 的有效期只有 1 小时,RefreshToken 的有效期可能是 90 天(参考这里,我看不明白)。为确保令牌永不过期,需要在每次运行时更新令牌。Secrets 不支持使用 Action 操作更新,故只能将令牌加密后保存到存储库的 graphtoken 分支,密钥保存在 Secrets 内。

授权 MyTodoApp 有什么风险?如何取消此授权?

正如授权时显示的应用权限所示,“创建、读取、更新和删除你的任务和计划”和“保持对已向 MyTodoApp 授予访问权限的数据的访问权限”是应用正常运行必须的权限,“读取您的个人资料”用于验证登录。程序不会也不可能索要您的敏感信息。在这里可以管理连接到 Microsoft 账户的应用。

无法登录微软账号?该 Microsoft 帐户不存在?

换用个人邮箱注册的账号,不要用学校/机构的账号。

GitHub Action 运行失败?

如果不明白为什么失败,到原仓库提交 issue

如果仓库设置为 Public,如何隐藏我的课程信息?

编辑config.yaml文件,把VerboseMode改成false

0%