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