||||
-|-|
| 摘要 | Discourse LTI 允许 Discourse 通过 LTI 1.3 标准 与多种学习管理系统集成。
| 安装指南 | 此插件已捆绑在 Discourse 核心中。无需单独安装该插件。
此插件实现了 LTI 1.3 身份验证标准,该标准被多种学习管理系统所支持。在 LTI 标准中,Discourse 充当“工具”角色。配置完成后,用户将能够在学习管理系统上点击按钮/链接,并立即登录到 Discourse。
具体的设置说明将根据您的学习管理系统而有所不同。但一般来说:
- 在学习管理系统中创建一个新的“工具”条目
- LTI 版本:1.3
- 启动 URL:站点上的任何 URL。用户登录后将被重定向到此 URL
- 身份验证请求 URL:
https://<your-discourse-site>/auth/lti/initiate
- 重定向 URL:
https://<your-discourse-site>/auth/lti/callback
- 工具公钥 - 留空。Discourse 永远不会向 LMS 发送数据
-
在您的 LMS 中,找到“授权端点”、“工具客户端 ID”、“平台颁发者 ID”和“平台公钥”,并将它们添加到 Discourse 的相关站点设置中。在 Discourse 中,可以通过在站点设置 UI 中搜索 lti 来找到这些设置。
-
如果您的学习管理系统保证用户电子邮件已验证,请启用 lti email verified 站点设置。
警告:如果您的 LMS 不验证电子邮件,启用 lti email verified 存在安全风险。
-
启用 lti enabled 站点设置
如果这些说明不适合您的 LMS,请在下面的主题中发帖,我们将尽力相应地更新说明。
如果我的站点设置为 invite_required 怎么办?
如果您希望用户在首次登录时经过 Discourse 邀请兑换流程,您可以使用 LTI “自定义属性”来指定 Discourse 邀请链接。新用户将被重定向到邀请页面,而现有用户将被发送到常规启动 URL。例如:
| 属性名称 |
属性值 |
discourse_invite_link |
https://discourse.example.com/invites/abcdefg |
常见问题
插件是否支持同时与多个 LMS 系统集成?
- 目前插件只支持一个 LMS 连接到站点。
LTI client IDs 站点设置确实接受多个值,但原因是某些 LMS 系统为每个课程设置一个客户端 ID。
23 个赞
您是否有关于将 LTI 集成与 Canvas LMS 集成的具体说明?
1 个赞
我是我们的管理员之一,也是一名软件工程师。我认为我遇到的问题与 cookie 以及 Discourse 和 Canvas 之间的“状态”不匹配有关。
这是我在 Discourse 日志中看到的错误:
(lti) 身份验证失败!state_mismatch: StandardError, State 参数与会话不匹配
我认为该错误是从此处抛出的:discourse-lti/lib/discourse_lti/lti_omniauth_strategy.rb at main · discourse/discourse-lti · GitHub
有什么想法或可以帮助我调试的地方吗?在 Canvas 文档的此页面上:Overview of an LTI Launch <a name="launch-overview"></a> - Canvas LMS REST API Documentation
有一个“无 cookie 启动”部分,我认为这与此处相关。但我也不能 100% 确定。任何帮助或见解都将不胜感激。
我在 Canvas 中成功地让 LTI 正常工作了,但有一个注意事项。以下是我的步骤:
-
在 Canvas 中创建一个开发者密钥。您在 JWK 方法和公共 JWK 中填写什么并不重要
-
在 Discourse LTI 设置中,填写您的设置
-
对于公钥,您可以导航到 https://\u003cyour_canvas_url\u003e/api/lti/security/jwks 并复制第二个密钥。然后您可以转到 https://8gwifi.org/jwkconvertfunctions.jsp 并将其粘贴到其中进行转换。然后复制 -----BEGIN/END PUBLIC KEY----- 之间的文本,并将其粘贴到 Discourse LTI 设置中的LTI 平台公钥中。然后保存。
注意事项如下。Canvas 生成的 JWK 会被轮换,似乎是每月一次。一旦第二个密钥发生更改,LTI 将会中断,您需要按照步骤 3 替换为新的密钥。
Discourse LTI 插件必须支持公共 JWK URL 才能保持最新。
2 个赞
我可以将多个 LMS 集成到一个 Discourse 吗?
此插件现已作为 Bundling more popular plugins with Discourse core 的一部分,与 Discourse 核心捆绑在一起。如果您是自托管用户并使用了此插件,则需要在下次升级前将其从 app.yml 中删除。
3 个赞