问题标签 [canvas-lms]

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 回答
743 浏览

c# - 如何使用 C# 启动 LTI 1.1 投诉网址

我们想要启动一个第三方网站,它是一个 LTI 工具提供商和 LTI 1.1 投诉。这个 LTI 工具提供者为我们提供了 url、消费者密钥和共享密钥。任何人都可以给我们一个示例 c# 代码来启动这个站点作为一个窗口弹出。

0 投票
2 回答
6278 浏览

canvas-lms - Canvas Lms 中的 SIS ID 是什么

我不明白画布中的 sis id 概念。画布中有多种 sis 类型sis id'sex: sis_course_id, sis_user_id.

我发现一个我不理解的非常小的解释是:

“在整个 API 中,对象由内部 ID 引用。您还可以通过 SIS ID 引用对象,方法是在 SIS ID 前面加上 SIS 字段的名称,例如 sis_course_id:。例如,检索课程的作业列表SIS ID 为 A1234:"

0 投票
1 回答
617 浏览

node.js - 通过代理服务或 curl 解决 CORS 问题

我在使用POST这个根本没有Access-Control-Allow-Origin的客户提供的服务时遇到了一个主要障碍。

我已经尝试过以下解决方案,还是您说根本不可能?

  1. 调查了 JSONP,但仅限于 GET。
  2. 在我的域上创建了一个可以向客户端域发出请求的服务。结束了{ [Error: socket hang up] code: 'ECONNRESET' }
  3. 尚未测试,但我可以使用 node-curl 完成它吗?https://www.npmjs.com/package/node-curl

请指教。

0 投票
1 回答
785 浏览

json - 如何在 powershell 中发布到画布 LMS

我目前正在为一所大学制作 API。该项目的目的是查看每门课程并检查它是否包含某个模块,如果没有,则添加一个。看起来很简单,但使项目复杂的事情是学习语法以实际做它!我在 powershell 中编写此代码,我尝试使用 curl 并调用 Web 请求。我尝试遵循画布的文档,但我无法得到它。这是我有两个例子,你能告诉我如何正确格式化它。

来自网站https://canvas.instructure.com/doc/api/index.html的文档

更新 5-26-2016 我已经弄清楚如何正确格式化消息的正文。现在我收到错误消息

我真的不知道此时该怎么做,此时将不胜感激任何指导。

0 投票
3 回答
2783 浏览

powershell - Invoke-WebRequest Canvas LMS API 分页

我似乎找不到关于这个主题的任何例子,我想知道如何去做。谁能给我看一个例子或指向一个关于如何使用 Invoke web-request 在 powershell 中进行分页的链接?我面临的挑战是我正在对一次只返回 100 行的服务器进行 API 调用。为了获得更多行,我必须再次调用服务器。我不知道该怎么做。如果有帮助,这里是 Canvas LMS 提供的链接以及我目前拥有的代码。

分页

分页

默认情况下,返回多个项目的请求将分页到 10 个项目。您可以使用 ?per_page 参数设置自定义的每页数量。可以将 per_page 设置为多大有一个未指定的限制,因此请务必始终检查 Link 标头。

要检索其他页面,应使用返回的 Link 标头。这些链接应被视为不透明。它们将是绝对 url,包括检索所需的当前、下一页、上一页、第一页或最后一页所需的所有参数。一个例外是,如果发送 access_token 参数进行身份验证,它将不会包含在返回的链接中,并且必须重新附加。

链接标题中提供了分页信息:

可能的 rel 值是:

current - 指向当前结果页面的链接。next - 指向下一页结果的链接。prev - 指向上一页结果的链接。第一 - 链接到结果的第一页。last - 链接到结果的最后一页。只有在相关的情况下才会包含这些内容。例如,结果的第一页将不包含 rel="prev" 链接。如果总计数太昂贵而无法在每个请求上计算,则 rel="last" 也可能被排除在外。

初始产品

最终产品

0 投票
2 回答
427 浏览

java - 涉及许多可选参数的 API 库的最佳实践

我们正在尝试编写一个 Java API 库来包装 Canvas LMS REST API。对于 API 处理的每种类型的对象,我们都有一个读取器和一个写入器接口。例如,我们有一个UserReader接口,它将从“ List users in course ”端点以及“ Search users in consortium ”端点返回用户对象。

我们正在努力解决的问题是如何最好地实现 API 调用的所有可选参数。如果您查看两个链接端点的规范,您会发现虽然它们都返回 User 对象,但它们采用非常不同的参数。最初的实现只是向 listUsersInCourse 方法添加了一堆列表(可以为空)和可选参数(可以为空)。因此,如果您不想指定任何可选参数,则调用此方法如下所示。是的,你可以有一个不指定任何选项的方法的无参数便捷版本,但是一旦你想使用任何选项,无论如何你都必须处理它们。

这是一个糟糕的主意,因为 1)某些端点有很多选项,这会导致方法签名荒谬;2)如果 Canvas 添加或更改选项(这已经发生),它将破坏我们的方法签名并迫使每个依赖于我们的库的人更新他们的代码。

可选的命名参数会很好,但 Java 不会这样做。我查看了其他一些 API 库,似乎很少有这么多参数用于 REST API。我已经考虑过一些解决这个问题的方法,但我不确定最好的选择是什么。到目前为止,这是我想出的:

1

一种相对结构化的方法是遵循构建器模式,其中包含添加特定选项的方法。例如:

这样,如果添加了新选项,它只是一种添加的新方法,不会破坏现有代码。不利的一面是,并非给定读取器类中的所有选项方法都适用于其中的所有 API 方法,这可能会造成混淆。例如,上面链接的两种用户列表方法都采用搜索词,但联盟不接受注册类型。因此,您总是需要仔细检查 Canvas API 文档以查看哪些选项对给定调用有效。此外,如果添加了一个选项,我们将不得不发布一个新版本的库,然后人们才能访问它。Canvas API 正在积极开发中,所以事情肯定会发生变化。

2

一种可能更加结构化的方法是创建特定于调用的选项类以进一步限制事物。这看起来像这样:

会有另一个ConsortiumUserSearchOptions类没有addEnrollmentType方法。虽然这可能是最安全且定义最明确的方式,但编写和维护这似乎是一场噩梦。

3

另一种方法是使用更通用的addOption(String key, String value)方法。上面的调用会变成:

这将大大减少我们在编码和维护方面的工作量,但会迫使库的用户了解更多信息并传入 Canvas API 中定义的魔术字符串。正如上面 #1 中所指出的,结构较少的最大好处是,当 Canvas API 添加新选项时,我们的用户可以立即使用它,而不必等待包含新方法的库的新版本.

4

另一个选项也可以在每个 API 方法中只接受一个完全通用的选项列表,并强制库的用户更多地参与构建请求。这看起来像这样:

这些是我想出的选项。如果您使用此 API 库,您会发现哪个最有用?您更愿意编写/维护哪一个?我完全错过了更好的方法吗?

0 投票
1 回答
363 浏览

ruby - 由于节俭错误,Canvas LMS 安装失败

我正在尝试按照生产开始说明安装 Canvas LMS。在捆绑安装时,它在 Thrift 安装时失败。我在 Mac 系统的 docker 上使用 Ubuntu 16.04。一切正常,但这个错误阻止了我启动系统。请帮我!

的输出mkmf.log是,

0 投票
0 回答
276 浏览

integration - 有没有办法将 Google Hangouts 与 Canvas LMS 集成?

具体来说,从 Instructure Canvas 的群组页面之一,如会议或页面或讨论,我希望能够通过 Google Hangouts 进行身份验证并连接到 Google Hangouts(使用自定义 Javascript 代码),从而产生一个新的 Google Hangouts 视频窗口。

  1. 设想的工作流程是这样的: 1.1。学生使用她的 Canvas ID 登录 Canvas LMS。

        1.2. 学生加入了她现有的小组之一。

        1.3. 学生进入诸如“会议”或“页面”或“讨论”之类的模块。

        1.4. 学生看到一个 Javascript 驱动的按钮,上面写着“加入环聊”。

        1.5。这将启动 Google OAuth2 身份验证工作流程。

        1.6. 学生使用她的个人 Google ID 向 Google 进行身份验证。

        1.7. 成功验证后,学生将转到自定义 Google Hangouts 视频会议正在运行的自定义 URL。    

  2. 我需要设置 OAuth2 身份验证/与 Canvas LMS 的集成吗?还是已经包含在 Canvas 中?我知道可能已经完成了这样的设置来支持与 Google Drive 的集成。在小组的“协作”模块中,我已经看到了“Google Docs”集成。如果是这种情况,我是否需要重新实现 Google OAuth2 连接以与 Google Hangouts 集成,还是可以重复使用已有的?    
  3. 我正在开发一个自定义的 Google Hangouts 应用程序,并且我已经使用此处提供的特定 Javascript 代码通过一个按钮将 Moodle 与我的自定义 Google Hangouts 集成:https ://github.com/getsmarter/moodle-rhythm_hangout/blob/master /模块.js。我需要在画布中使用类似的代码来尝试启动/加入 Google Hangout。是否可以将此类功能(实际上是“加入环聊”)按钮合并到 Canvas 组的会议/页面/讨论模块中?  
  4. 我的用户(学生)将使用他们自己的个人 Google ID 登录、验证并使用我的自定义 Google Hangouts 应用程序。我怀疑同样的事情也适用于带有 Google Docs 的 Collaborations 模块——用户可以使用他们的个人 Google ID。Canvas 是否有任何地方存储用户的 Google ID 和他们的 Canvas 登录 ID 之间的映射/连接?    
  5. 我的自定义 Google Hangouts 应用需要 Google ID、画布 ID、学生课程 (ID) 和学生小组 (ID) 之间的“映射”或连接。我认为这在 Canvas 中不存在并且需要自定义开发?或者有没有办法将此信息存储到 Google 表格中,例如,从 Canvas 中?

  6. LTI 是唯一的方法吗?还是有其他方法?

0 投票
1 回答
257 浏览

api - 使用 tincan API 从不同的 LMS 获取数据

如何使用 Tincan API (LRS) 从多个 LMS(Moodle、Blackboard 等)获取数据?

具体来说,我想至少获得这些信息

学生信息、教师信息、课程信息、课程信息、课程信息

我还需要知道要向其发出请求的实现过程和 API 端点。

0 投票
2 回答
555 浏览

canvas-lms - Canvas LMS REST API 测验创建

我在使用 Canvas REST API 创建测验时遇到问题:

title我可以用set创建一个新测验。

我可以使用以下参数集添加 N 个问题:

  • question_name
  • question_text
  • question_type
  • points_possible
  • answers

当我查看我的测验页面时,我可以看到测验存在,但它只显示为测验创建了 1 个问题。我必须转到测验页面,单击“编辑”按钮,然后保存所有问题的测验以显示在测验页面上。

我在这个工作流程中缺少什么?