Todosync:利用Github Actions自动将Canvas内容同步至Microsoft Todo
不想错过DDL?Canvas LMS的邮件推送功能不够直观?
Microsoft Todo和Canvas的联动或许是你的不二之选。
前言
在了解到这个工具之前,我一直受canvas反馈功能不够全面的困扰。虽然有日历馈送,但并不是每个老师每个作业都会设置DDL,而且完成之后也没法在日历上删除。直到有一天,我在水源社区刷到了这个帖:
【TodoSync】自动将 Canvas 的作业、公告等同步到 Microsoft Todo我超这可太牛逼了。
我本人一直是Todolist的重度使用者,感觉失去了Todolist就没有了方向。在使用了iOS系统的大量app,甚至氪了近200买一些app的会员之后,我负责任地说Microsoft Todo,不仅免费,而且用起来最顺手。而这款Todosync对我来说,简直就是专业对口。
使用教程
注册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
生成Canvas许可证
-
登录canvas,进入账户-设置
-
点击“创建新访问许可证”
-
“用途”随意填写,“过期”留空,这样不需要重新创建
-
点击“生成令牌“,然后复制那一串令牌。
创建Action Secret
-
来到你自己的仓库,这时你的仓库标题下应该会有一行小字
forked from 1357310795/TodoSync
-
进入Settings
-
选择“Secrets - Actions”,点击“New repository secret”
-
Name
为CANVAS_TOKEN
,Value
为刚才复制的令牌,完成后点击Add Secret
-
完成后如图所示
配置Graph Token
- 下载这个生成工具。此链接是1.0版本,需要最新版本请前往Releases界面下载。浏览器可能会提示软件不安全,那就坚持保留。我们要相信学长。
-
打开下载的工具,点击“获取 Graph 认证”,跳转到浏览器
-
授权 MyTodoApp。如果浏览器没有登录Microsoft账号,可能需要先登录。
-
完成后,回到程序,系统会自动生成秘钥,点击确定即可。完成后不要关闭程序
-
前往自己fork的仓库,如图所示切换到graphtoken分支
-
编辑 graphtoken.asc 文件
-
复制程序中的一大串非中文字符,粘贴进来(把原先的覆盖掉,注意不要有多余的换行),直接Commit Changes
-
再次到Settings的“Secrets”里,创建一个新条目,“Name”为“KEY”,“Value”为程序中的一串中文字符
-
点击Add secret,完成Graph Token的创建
启动定时任务(Github Actions)
-
在自己fork的仓库,点击
Actions
选项卡,点击绿色按钮启用。 -
在左侧选择“TodoSync”,右侧点击“Run workflow”
-
此时workflow已经开始运行,一分钟左右就能在你的Microsoft Todo里面看到Canvas的待办事项了。
-
刷新页面后可以进入Action查看程序运行详情,如果遇到报错,可以在评论区交流。
-
编辑仓库根目录下的
config.yaml
文件,可以调整同步程序设置
常见问题
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