我正在从 SOAP 迁移到 valence API。我在获取用户(所有用户,基于角色,按用户 ID 等)和成绩(所有变体)等几个调用时遇到了一些问题。
我看到一个没有项目的空列表返回。没有任何错误。当我尝试使用 SOAP 获取数据时,我得到了所需的数据。
我已经检查了“搜索学生”的权限,所以从技术上讲,当我尝试获取所有用户或通过学生的角色 ID 时,我应该得到一些东西。我在这里还缺少什么...
我正在从 SOAP 迁移到 valence API。我在获取用户(所有用户,基于角色,按用户 ID 等)和成绩(所有变体)等几个调用时遇到了一些问题。
我看到一个没有项目的空列表返回。没有任何错误。当我尝试使用 SOAP 获取数据时,我得到了所需的数据。
我已经检查了“搜索学生”的权限,所以从技术上讲,当我尝试获取所有用户或通过学生的角色 ID 时,我应该得到一些东西。我在这里还缺少什么...
D2LWS 服务的身份验证机制将 API 调用者置于特权调用者的位置。Valence 学习框架 API 使用不同的身份验证模型:标识用户的用户 ID/密钥令牌被后端使用以限制调用的功能。也就是说:经过身份验证的用户应该可以访问与用户通过 Web UI 获得的相同功能和数据,仅此而已。
在这种特殊情况下,调用成功:它们发回结果集中您的调用用户有权查看的所有元素——没有一个。
这几乎可以肯定是授予调用用户的角色权限的问题,并且围绕调用调试权限可能具有挑战性。Valence 项目的文档提供了一个关于调查角色权限的演练主题,该主题可能会在此处提供一种可能的方法,尤其是关于获取对用户记录(或出现在用户记录中的属性)的访问权限的调用。
/d2l/api/lp/{version}/users/
正如演练所讨论的,进行一般性调用以使权限发挥作用有多个方面:
如果您尝试使用查询参数进行过滤,调用用户上下文是否有权使用您要过滤的数据
调用用户上下文是否有权查看受用户信息隐私设置影响的属性
调用用户是否有权搜索他们需要的所有用户角色,以便在结果集中找到用户
用户调用操作在根组织单位,所以调用用户需要的权限必须在组织单位类型上设置。
相比之下,与成绩相关的 API 调用不是在根组织单元上运行,而是通常在课程产品、部分或组上运行。围绕调用的权限将在关联的组织单位类型中进行检查,因此调用用户将需要针对这些类型的正确权限。此外,与课程提供(也包括部分和组)相关的许多呼叫要求呼叫用户在相关组织单位中注册(在某些情况下,明确注册,而不仅仅是通过级联注册进行注册)。
如果您确定您的调用用户上下文确实允许您访问这些内容(并允许您通过 Web UI 访问这些数据),并且当您通过 API 调用时仍然看到这样的不匹配,那么您可能已经发现了某种缺陷,您应该请贵组织的支持联系人或您的客户经理打开支持票证,以便通过 Desire2Learn 的支持台报告该问题。