我们正在努力将用户的ID作为D2L中LTI启动有效负载的一部分。
这就是user_id
字段:
{
"user_id": "0d45101e-230a-4c06-9008-0024a52038fc_1914"
}
我们只想要最后一个DB id字段部分。在尝试将其作为单独的自定义参数包含时,我们发现除了允许的参数的复选框选项之外,似乎没有一种非常好的方法。有没有办法实现这一目标?
创建新的自定义链接似乎可以选择提供自定义参数。但看起来主要是硬编码值,似乎无法找到模板形式来提供动态值。
否则,我们只有另一个后备选项是解析此id并将最后一部分作为我们想要的标识符,这是我们的最后选择。
任何帮助/建议表示赞赏。谢谢!
答案 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调用)。