0

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

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

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

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

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

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

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

4

2 回答 2

1

你的假设是正确的,这是不可能的。除了您已经知道的 user_id 字段之外,系统用户 ID 不会随 LTI 请求一起发送。自定义参数确实是硬编码的,不能用于发送动态/每个用户数据。之前有人问过这个问题,但没有回答如何在 D2L 基本 LTI 中为自定义参数分配动态值

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

于 2017-12-06T05:48:08.260 回答
0

您是正确的,目前没有支持的方式来获取要在 LTI 启动消息中传输的 Brightspace 用户 ID 值。但是,有办法解决这个问题;您可以使用 Brightspace API。因为所有 LTI 启动都是由用户的浏览器介导的,所以您的 LTI 工具可以“知道”浏览器的用户与 Brightspace 有一个活动会话。

如果您的 LTI 工具也已注册(在 Brightspace 的Manage Extensibility应用程序注册表中),那么您可以在收到启动时使用whoami API 路由来获取有关启动用户的基本用户信息(包括他们的 Brightspace 用户 ID)。Brightspace 开发人员文档中的扩展远程插件演练向您展示了 Python 执行此操作的一般方法;这是一个老例子,但总的来说,该方法仍然可行。

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

于 2017-12-11T15:17:12.647 回答