问题标签 [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 投票
1 回答
76 浏览

ruby-on-rails - Brightspace / IMS-LTI 内容项消息问题

在成功启动我的 Ruby on Rails 应用程序后,我正在尝试通过 Content Item Message 规范将发布的内容调试回 Brightspace——但我从 Brightspace 服务器得到的只是难以理解的 500 错误——我想我正在发送一个错误的签名(Brightspace 曾经确认过这一点),但我无法找到关于如何计算随机数、时间戳和签名的确切文档,也无法找到似乎可以处理此问题的开源库.

任何建议表示赞赏。

0 投票
0 回答
365 浏览

ruby-on-rails - IMS-LTI Gem 文档

这不是一个编程问题,但我仍然认为这是提出这个问题的最佳论坛。

是否有IMS-LTI gem 的任何文档?我必须在 ROR 中创建一个 LTI 2 工具,但我找不到任何有关如何使用此 gem 的文档?我知道一种方法是深入研究这个例子,但有人能指出我正确的方向吗?可能有人经历过相同的过程,您是如何学习如何使用它的?最近几天我一直在寻找,但我找不到任何东西。

谢谢

0 投票
0 回答
75 浏览

ruby-on-rails - 在画布 lms 中使用 LTI APP 在现有模块下创建批量外部 LTI 项目

我有一个要求,我必须在 Canvas LMS 中已选择的模块下创建一个批量内容项。

如何使用 Canvas API 实现它?我可以使用创建模块项目在模块下创建普通的批量内容项目

但以类似的方式,我想在模块下添加 LTI 内容作为模块项。

提前致谢。

0 投票
1 回答
384 浏览

ruby-on-rails - OAuth LTI 错误:请求未验证?

我正在尝试升级旧版应用程序以使用 2.2 版本的 LTI ruby​​ gem。

目前,我无法使用以下方式获得 Oauth 请求进行验证:

我不确定是什么原因造成的,因为据我所知,它应该是一个有效的请求。以下是所涉及变量的转储:

应用程序 9783 标准输出:--- OAUTH 密钥 ====> ocill-lti-key 应用程序 9783 标准输出:--- OAUTH 密钥 ====> 已编辑!应用程序 9783 标准输出:--- 请求 URL https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create 应用程序 9783 标准输出:--- 请求参数 {"oauth_consumer_key"=>"ocill-lti- key", "oauth_signature_method"=>"HMAC-SHA1", "oauth_timestamp"=>"1510067228", "oauth_nonce"=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", "oauth_version"=>"1.0", "context_id"=>"de25c863939f3cacfc02480738d072d95597842c", "context_label"=>"johnathb Sandbox", "context_title"=>"johnathb 的 Canvas 培训课程", "custom_canvas_assignment_points_possible"=>"https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", "ext_lti_assignment_id"=>"f9139721-be1f-473a-91b5-6a08a386074c", "ext_outcome_data_values_accepted"=>"url,text" , "ext_outcome_result_total_score_accepted"=>"true", "ext_outcomes_tool_placement_url"=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", "ext_roles"=>"urn:lti:instrole :ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims /lis/User", "launch_presentation_document_target"=>"iframe", "launch_presentation_locale"=>"en", "launch_presentation_return_url"=>" https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect ", "lis_outcome_service_url"=>"https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback ", "lti_message_type"=>"basic-lti-launch-request", "lti_version"=>"LTI-1p0", " oauth_callback"=>"about:blank", "resource_link_id"=>"52e0499f9ed929340aec886dd08c7035e45471f5", "resource_link_title"=>"OCILL Staging Test", "roles"=>"Instructor", "tool_consumer_info_product_family_code"=>"canvas", "tool_consumer "=>"cloud", "tool_consumer_instance_contact_email"=>"notifications@instructure.com", "tool_consumer_instance_guid"=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", "tool_consumer_instance_name"=>"密歇根大学 - 安娜堡分校", "user_id"=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", "oauth_signature"=>"7jq4lBIBYoMzIeShPZbPNJjOrEs=", "controller"=>"launch", "action"=>"create}"

应用 9783 标准输出:--- AUTHENTICATOR INSPECT ===> #"ocill-lti-key"、"oauth_signature_method"=>"HMAC-SHA1"、"oauth_timestamp"=>"1510067228"、"oauth_nonce"=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscQ" , "oauth_version"=>"1.0", "context_id"=>"de25c863939f3cacfc02480738d072d95597842c", "context_label"=>"johnathb Sandbox", "context_title"=>"针对 johnathb 的 Canvas 培训课程", "custom_canvas_assignment_points_possible"=>"10 ", "custom_canvas_assignment_title"=>"OCILL 分期测试", "custom_canvas_enrollment_state"=>"active", "ext_ims_lis_basic_outcome_url"=>" https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback", "ext_lti_assignment_id"=>"f9139721-be1f-473a-91b5-6a08a386074c", "ext_outcome_data_values_accepted"=>"url,text", "ext_outcome_result_total_score_accepted"=>"true", "ext_outcomes_tool_placement_url"=>" https://umich .instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", "ext_roles"=>"urn:lti:instrole:ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn: lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/User", "launch_presentation_document_target"=>"iframe", "launch_presentation_locale"=>" zh", "launch_presentation_return_url"=>" https://umich.instructure。com/courses/56125/external_content/success/external_tool_redirect ", "lis_outcome_service_url"=>" https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback", "lti_message_type"=>"basic-lti-launch-request", "lti_version"=>"LTI-1p0", "oauth_callback"=>"about:blank", "resource_link_id"=>"52e0499f9ed929340aec886dd08c7035e45471f5", "resource_link_title "=>"OCILL Staging Test", "roles"=>"Instructor", "tool_consumer_info_product_family_code"=>"canvas", "tool_consumer_info_version"=>"cloud", "tool_consumer_instance_contact_email"=>"notifications@instructure.com", " tool_consumer_instance_guid"=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", "tool_consumer_instance_name"=>"密歇根大学 - 安娜堡分校", "user_id"=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", "oauth_signature"=>"7jq4lBIBYoMzIeShPZbPNJjOrEs=", "controller"=>"launch", "action"=>"create"}, @options={:consumer_key=>"ocill-lti-key", :signature_method =>"HMAC-SHA1", :timestamp=>"1510067228", :nonce=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", :version=>"1.0", :callback=>"about:blank"}, @parsed_pa​​rams={:context_id= >"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb 沙盒", :context_title=>"johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test"vas=>:"活动", :ext_ims_lis_basic_outcome_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", :ext_lti_assignment_id=>"f9139721-be1f-473a-91b5-6a08a386074c", :ext_outcome_data_values_accepted=>"url,text", : ext_outcome_result_total_score_accepted=>"true", :ext_outcomes_tool_placement_url=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", :ext_roles=>"urn:lti:instrole:ims/lis/管理员,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/User" , :launch_presentation_document_target=>"iframe", :launch_presentation_locale=>"en", :launch_presentation_return_url=>" https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect ", :lis_outcome_service_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback", :lti_message_type=>"basic-lti-launch-request", :lti_version=>"LTI-1p0", :resource_link_id=>"52e0499f9ed929340aec886dd08c7035e45471f5", :resource_link_title=>"OCILL Staging Test", :roles=>"Instructor ", :tool_consumer_info_product_family_code=>"canvas", :tool_consumer_info_version=>"cloud", :tool_consumer_instance_contact_email=>"notifications@instructure.com", :tool_consumer_instance_guid=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", :tool_consumer_instance_name=>"University密歇根州 - 安娜堡”, :user_id=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", :controller=>"launch", :action=>"create"}, @consumer_key="ocill-lti-key", @Signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @secret="REDACTED!", @message=#"10", "custom_canvas_assignment_title"=>"OCILL 分期测试", "custom_canvas_enrollment_state"=>"active"}, @ext_params={"ext_ims_lis_basic_outcome_url"=> "https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", "ext_lti_assignment_id"=>"f9139721-be1f-473a-91b5-6a08a386074c", "ext_outcome_data_values_accepted"=>"url,text" , "ext_outcome_result_total_score_accepted"=>"true", "ext_outcomes_tool_placement_url"=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530", "ext_roles"=>"urn:lti:instrole:ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role: ims/lis/Instructor,urn:lti:sysrole:ims/lis/User"}, @unknown_params={"controller"=>"launch", "action"=>"create"}, @oauth_consumer_key="ocill-lti -key", @oauth_signature_method="HMAC-SHA1", @oauth_timestamp="1510067228", @oauth_nonce="70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", @oauth_version="1.0", @context_id="de25c863939f3cacfc02480738d072d95597842c", @context_label="johnathb Sandbox", @ context_title="johnathb 的 Canvas 培训课程", @launch_presentation_document_target="iframe", @launch_presentation_locale="en",@launch_presentation_return_url="https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect", @lis_outcome_service_url="https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback ", @lti_message_type="basic-lti-launch-request", @lti_version="LTI-1p0", @oauth_callback="about:blank", @resource_link_id="52e0499f9ed929340aec886dd08c7035e45471f5", @resource_link_title="OCILL 暂存测试", @角色="Instructor",@tool_consumer_info_product_family_code="canvas",@tool_consumer_info_version="云",@tool_consumer_instance_contact_email="notifications@instructure.com",@tool_consumer_instance_guid="7db438071375c02373713c12c73869ff2f470b68.umich_instance_name",密歇根大学 - 安娜堡分校”, @user_id="1ec00186b63b783a994fd2d5b7648ba6cdfe9807", @oauth_signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @launch_url="https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create"> , @simple_oauth_header=#https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", : context_title=>"johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807”, @oauth_signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @launch_url="https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create">, @simple_oauth_header=#https://lrc-tes .lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title=>"A Canvas 培训课程 johnathb", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807”, @oauth_signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @launch_url="https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create">, @simple_oauth_header=#https://lrc-tes .lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title=>"A Canvas 培训课程 johnathb", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"@simple_oauth_header=#https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title =>"Johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"@simple_oauth_header=#https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title =>"Johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", :ext_lti_assignment_id=>"f9139721-be1f-473a-91b5-6a08a386074c", :ext_outcome_data_values_accepted=>"url,text", : ext_outcome_result_total_score_accepted=>"true", :ext_outcomes_tool_placement_url=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", :ext_roles=>"urn:lti:instrole:ims/lis/管理员,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/User" , :launch_presentation_document_target=>"iframe", :launch_presentation_locale=>"en", :launch_presentation_return_url=>" https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect ", :lis_outcome_service_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback", :lti_message_type=>"basic-lti-launch-request", :lti_version=>"LTI-1p0", :resource_link_id=>"52e0499f9ed929340aec886dd08c7035e45471f5", :resource_link_title=>"OCILL Staging Test", :roles=>"Instructor ", :tool_consumer_info_product_family_code=>"canvas", :tool_consumer_info_version=>"cloud", :tool_consumer_instance_contact_email=>"notifications@instructure.com", :tool_consumer_instance_guid=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", :tool_consumer_instance_name=>"University密歇根州 - 安娜堡”,:user_id=>“1ec00186b63b783a994fd2d5b7648ba6cdfe9807”,:controller=>“launch”,:action=>“create”},@options={:nonce=>”70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", :signature_method=>"HMAC-SHA1", :timestamp=>"1510067228", :version=>"1.0", :consumer_key=>"ocill-lti-key", :callback=>"about:blank" , :consumer_secret=>“已删除!”}>>

0 投票
1 回答
71 浏览

sap - SAP 学习解决方案是否支持 LTI 集成?如果没有,我将如何添加支持?

我有一个使用SAP Learning Solution的客户,他们想在我们制作的自定义系统上使用课程。我们的系统支持成为 LTI 提供者。LTI(学习工具互操作性)是由 IMS Global 开发的标准,它建立在 OAuth 之上。

有谁知道 SAP 是否已经支持 LTI?(我找不到任何迹象表明确实如此,但我想检查一下)。

有谁知道我们将如何添加支持?

0 投票
1 回答
182 浏览

javascript - 我可以使用 LTI(学习工具互操作性)在消费者课程中插入 HTML 脚本标签吗?

我想开发一个插件,允许 LMS 方面的讲师/课程开发人员在课程和/或测验中插入脚本标签。此脚本标记具有允许身份验证和会话监督的代码。

脚本标签如下所示:

是否可以使用 LTI 做到这一点?

此外,是否可以构建一个基于 LTI 的插件,然后将生成的验证数据返回到 LMS,以便可以与课程/测验的参与者结果一起查看?

0 投票
2 回答
429 浏览

desire2learn - 获取 D2L LTI 启动的自定义参数

我们正在尝试将用户 ID 作为 D2L 中 LTI 启动有效负载的一部分。

这就是我们作为该user_id领域得到的:

我们只想要最后一个 DB id 字段部分。在尝试将其作为单独的自定义参数包含在内时,我们发现除了允许参数的复选框选项之外,似乎不是一个很好的方法。有没有办法做到这一点?

创建新的自定义链接似乎可以选择提供自定义参数。但看起来大部分是硬编码值,似乎无法找到模板形式来提供动态值。

否则,我们只有另一个备用选项是解析这个 id 并将最后一部分作为我们想要的标识符,这是我们最后的选择。

任何帮助/建议表示赞赏。谢谢!

0 投票
1 回答
53 浏览

sakai - 无法在 sakai lms 中安装外部工具“YouSeeu”

我试图通过 LTI 在 sakai 中安装/连接 Youseeu 工具。但我无法找到以下字段的任何值 1. 远程 URl。2. 遥控工具钥匙。3.遥控工具秘籍。如果有人在 sakai 或任何其他 lms 中安装了 youseeu,请帮助我如何做到这一点。我对此进行了很多搜索,但没有找到任何准确的结果。这是截图https://snag.gy/ZHGerA.jpg。谢谢

0 投票
1 回答
119 浏览

arrays - 如何将数组类型组参数映射到 LTI1p0

我有一个使用 LTI1p0 的 LTI 工具使用者 (LMS),它将向当前未使用 LTI 的服务发送请求。因此,我正在编写一个包装器的 NodeJS 实现,它将

  1. 从 LTI 工具消费者接收,
  2. 将其映射到匹配服务的 API,
  3. 将其发送到服务,
  4. 然后将来自服务的响应解析为 LTI Tool Provider 格式,
  5. 最后将其发送回工具消费者。

该服务有一个名为的必填字段groups,它需要一个组对象数组,如下所示:

LTI1p0 实施指南中并不完全存在此参数。所以我想知道如何groups通过 LTI 最好地发送数组类型(在我的情况下)信息。

在查看文档时,我遇到了一些可以使用的潜在参数:

1.上下文参数

该指南提到“上下文类型将是“组””,并且有用于context_idcontext_type、的参数context_title。问题是这只是每个请求/用户一个组的一个选项。

2.自定义参数

我可以创建一个自定义参数并调用它custom_groups,这看起来很简单,但我不确定该值应该如何查找数组?就像一个字符串化的 json 对象?

对于roles参数,可以发送以逗号分隔的字符串列表(即roles= Instructor, Creator,..),但在我的情况下这还不够。

我还是 LTI 的新手,所以如果这很明显,我深表歉意。

注意:LTI 消费者 (LMS) 和服务都是外部的,即我无法更改它们,只能提供包装器。我可以与工具消费者就可能的自定义参数进行沟通,但再次不确定要请求哪种格式。此外,该服务可能会在年底前实施 LTI,因此理想情况下可以删除包装器,并且工具使用者不必进行太多更改。

非常感谢任何帮助!

0 投票
0 回答
34 浏览

moodle - 通过 LTI 从 Moodle 3.4 将课程导入 Blackboard 有什么注意事项?

我们有这个场景通过 LTI 处理 moodle-to-moodle-。没有使用 Blackboard 的经验,如果任何尝试过此操作的人都可以向我们指出一些需要注意的事项的信息,我们将不胜感激。谢谢