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

时间:2017-12-05 20:17:14

标签: desire2learn lti

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

这就是user_id字段:

{
    "user_id": "0d45101e-230a-4c06-9008-0024a52038fc_1914"
}

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

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

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

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

2 个答案:

答案 0 :(得分:1)

你的假设是正确的,不能这样做。系统用户ID不会与LTI请求一起发送,而不是您已经知道的user_id字段。 自定义参数确实是硬编码的,不能用于发送动态/每用户数据。之前已经问过这个问题没有回答How to Assign Dynamic Values to Custom Parameters in D2L Basic LTI

拆分下划线上的user_id字段以提取系统用户ID是唯一的选择。

答案 1 :(得分:0)

您已经确定目前没有支持的方法来在LTI启动消息中传输Brightspace用户ID值。但是, 解决了这个问题;您可以使用Brightspace API。由于所有LTI发布都是由用户的浏览器调解的,因此您的LTI工具可以“知道”#34;浏览器的用户与Brightspace有活动会话。

如果您的LTI工具也已注册(在Brightspace' Manage Extensibility应用程序注册表中),那么您可以在接收启动时使用whoami API route获取有关启动的基本用户信息用户(包括他们的Brightspace用户ID)。 Brightspace开发人员文档中的扩展Remote Plugins walkthrough向您展示了Python,您可以这样做的一般方法;它是一个古老的例子,但总的来说,这种方法仍然可行。

实际上,您的LTI工具需要公开另一个端点,它可以用来接收来自Brightspace的身份验证令牌,并且,当用户第一次启动LTI时,他们会被提示同意您的LTI工具可以访问他们的数据(代表他们进行API调用)。