问题标签 [lti]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
34 浏览

lti - 有没有办法在登录时启动 Canvas LMS 外部应用程序(插件)或在登录后立即显示在主屏幕上?

我正在尝试编写一个可以集成到 Canvas LMS/LTI 中的应用程序,但在登录时启动,或者在学生登录后立即在主屏幕上的某个位置显示,而不是配置为在课程内或某个看不见的子菜单。另一种选择是让它显示一个弹出窗口或以某种方式显示为通知,基于后端数据的某些条件触发。

到目前为止,我只能将我的应用程序添加为必须由学生手动启动的外部应用程序......所以-->正如俗话所说的“看不见...... . 理想情况下,我需要学生每天看到这一点并与之互动一次,无论是在他们登录时,还是基于某些触发器。我不希望/不需要它在他们正在做作业或参加测验时弹出,但我确实需要他们每天以某种方式查看它并且没有他们需要记住点击的链接。任何想法,将不胜感激。

0 投票
1 回答
174 浏览

canvas - LTI Advantage 资源链接未在 Iframe 中打开

我已经为这个问题苦苦挣扎了几天,但找不到任何解决方案。

我已经实现了 LTI Advantage (LTI 1.3),它就像魅力一样。但是,有一个问题我无法摆脱。在 LTI 1.3 中,我们可以选择在 iframe 中显示工具的内容(还有在窗口中显示它的选项,但我只想坚持使用 IFrame)

当我尝试创建深层链接时,它会按预期在 iframe 中打开。但是,当我尝试打开资源链接时,应用程序会在新窗口而不是 iframe 中打开。

我搜索了一个可能的解决方案:我认为这一定是因为响应标头中附加了 X-Frame-Options,我尝试通过在 Global.aspx.cs 中添加代码来手动删除它我已经编写了从网络中删除此标头的代码配置设置,但没有任何效果。

现在我想知道我启动应用程序的代码可能是罪魁祸首。我正在使用以下代码使用表单发布启动应用程序:

此代码是否负责在窗口而不是 iframe 中启动应用程序?

相同的 LMS 设置适用于我的其他 POC 应用程序,没有任何问题。然而,唯一的区别是我的可启动应用程序只是同一个 POC 应用程序中同一个域中的一个测试页面。而在实时场景中,它是不同的应用程序,URL 略有不同。

以下是我正在使用的一些示例 URL。

OIDC 登录验证 URL:https ://mysiteltiadvantage.mysite.com/ LTI 应用程序启动 URL:https ://devtesting.mysite.com/LTI/home/LTIAdvantageApp?productid=13902 应用程序 URL:http://apptest.mysite。 com/product?applicationid=13&accountid=1076615

任何人都可以建议任何解决方法来使用 LMS 在 IFrame 中打开应用程序或指出我在这里犯的错误吗?

拉克斯曼曼卡拉。

提前致谢。

0 投票
0 回答
227 浏览

safari - 如何使用 ITP 在 Safari IFrame 中跟踪 OpenID Connect 的状态?

最近的规范(例如 LTI 1.3)使用(IdP 发起的)OpenID Connect 来验证工具。在 LTI 中,这些工具通常在不同域的 iframe 中运行。理论上,整个身份验证流程“只是”浏览器重定向的 3 步来回。

为避免 CSRF,建议在使用 OpenID 连接的会话中跟踪状态参数。但是,Safari 在 iframe 中的任何存储可用之前需要跳过不同的箍:可能需要请求存储(在用户交互之后),需要事先在顶级上下文中设置 cookie,...

我能想到的从 IFrame(具有 CSRF 保护)中启动 OpenID 连接的所有解决方案都需要大量代码和检查,包括后端(设置仅 http 会话)和前端(检查和请求 cookie 存储)。我无法想象像 LTI 1.3 这样最新的标准需要如此复杂才能使其正常工作,所以我想知道是否有“推荐”的方法从带有状态参数的 iframe 中进行 OpenID 连接。

0 投票
2 回答
594 浏览

servlets - 使用 LTI(使用 oauth2)如何启动对 canvas LMS API 的查询?

Canvas 是一个学习管理系统,它使用 LTI(学习工具互操作性)连接到第三方网站并进行身份验证。

我们正在编写一个工具。我们有一个与画布共享秘密的工作服务器,因此可以接收消息。当用户点击链接时,用户 ID 被传递给服务器。我们可以执行我们的代码,然后当我们返回时,我们想在系统中插入一个成绩。Canvas 有一个 REST API 来处理这些事情:

例如,要列出我们将使用的课程:

但是,这将失败,因为用户必须在查询中嵌入 oauth 令牌才能进行身份验证。LTI 如何将授权传递回 Canvas,以便我们可以写成绩?

0 投票
1 回答
245 浏览

canvas - 如何在 LTI 1.3 中访问课程内容和其他画布 API 数据

我按照画布文档 - https://community.canvaslms.com/docs/DOC-16794-canvas-release-lti-13-and-lti-advantage-2019-创建并设置了 LTI 1.3 工具和 LTI 密钥06-22

我可以在画布内启动该工具,并能够执行身份验证过程并获得“id_token”作为响应,并且画布显示我的成功页面。

现在我需要通过画布 API 访问(https://canvas.instructure.com/doc/api/courses.html#method.courses.show)课程内容,我无法使用 LTI 密钥访问它。

解决方案是什么?如何使用 LTI 密钥访问 LTI 1.3 工具中的内容数据或画布 API?

0 投票
1 回答
212 浏览

visual-studio-2015 - Visual Studio 或 nuget 包中的 LTI 1.3 SDK

谁能建议我哪个包/SDK/nuget 包可用于 Visual Studio 中的 LTI 1.3。我正在使用 Visual Studio 2015,但我没有找到任何用于集成 LTI 1.3(IMS Global)的 SDK/包/nuget 包。

我找到了一个支持LTI 1.2 版本的链接。 https://www.nuget.org/packages/LtiLibrary.Core/ 因此我需要一些不同的 LTI 1.3 链接。

0 投票
1 回答
187 浏览

node.js - 如何将 Moodle 中的学生数据导入 LTI 工具(Web 应用程序)

我正在构建一个 Web 应用程序作为 LTI 工具。如何将 Moodle LMS 中的学生数据(成绩、课程)请求到我的 Web 应用程序(使用 Node.js 构建)?

我已使用此文档了解如何将成绩发送回 LMS。但是,我找不到任何资源来解释如何从 moodle 接收学生数据并将其显示到我的 LTI Web 应用程序中。(https://cvmcosta.me/ltijs/#/?id=table-of-contents

0 投票
1 回答
162 浏览

sails.js - 将 Ltijs 集成到现有的 Sails 应用程序中

我想在我们的 Sails 应用程序中使用 Ltijs 库 ( https://cvmcosta.me/ltijs )。将 Ltijs 作为另一个快速服务器的一部分进行部署的方法是这样的(来自 Ltijs 文档):

将中间件放入 Sails 的方法是这样的(没有 app.use(...)!):

后者工作,但它工作“好”,因为现在每个请求都被 Ltijs 捕获,应用程序不再工作。我的问题是,如何将路径 '/lti' 从 app.use('/lti', lti.app) 带入风帆游戏?

我尝试了很多这样的事情都没有奏效:

提前感谢您的帮助!

0 投票
1 回答
75 浏览

canvas - 添加对 LTI 1.1.2 工具提供程序的支持

我们作为工具提供商的电子学习应用程序支持 LTI 1.0 标准,由于 IMS global 停止了对 LTI1.0 的支持,因此我们计划升级到立即支持的版本,即 LTi 1.1.2。我发现默认获取一些模拟器或工具消费者来测试我的应用程序。有人向我推荐任何支持 LTI1.1.2 版本的工具消费者应用程序。

0 投票
1 回答
64 浏览

php - 使用 Zend 2 实现 LTI1.3 工具提供程序

如何在我的学习应用程序中实现 LTI1.3 作为工具提供者。我已经尝试了 GitHub 中提供的 php LTI1.3 库,但没有成功。