Rest 创建组类别-D2L价

Rest 创建组类别-D2L价,rest,desire2learn,valence,Rest,Desire2learn,Valence,我正在尝试使用以下服务在课程中动态创建组类别: [/d2l/api/lp/(version)/(orgUnitId)/groupcategories/ \[POST\]][1] 以下是我正在发送给此服务的GroupData(创建形式的Group.GroupData)JSON块: { "Name": "New Group Category", "Description": { "Content": "", "Type": "HTML" },

我正在尝试使用以下服务在课程中动态创建组类别:

[/d2l/api/lp/(version)/(orgUnitId)/groupcategories/ \[POST\]][1]
以下是我正在发送给此服务的GroupData(创建形式的Group.GroupData)JSON块:

{
    "Name": "New Group Category",
    "Description": {
       "Content": "",
       "Type": "HTML"
    },
    "EnrollmentStyle": 0,
    "EnrollmentQuantity": null,
    "AutoEnroll": false,
    "RandomizeEnrollments": false,
    "NumberOfGroups": 5,
    "MaxUsersPerGroup": null
} 
我正在使用管理“实用工具”帐户的用户上下文进行调用。我有2门测试课程,我已经确认我可以使用这个工具帐户通过web界面创建类别

我的问题是,根据我尝试在其中创建类别的课程,结果好坏参半。在一个过程中,该过程返回200-OK,在另一个过程中返回403禁止

以下是(简化的)请求:

呼叫1 /d2l/api/lp/1.4/350110/groupcategories/ 结果:403禁止

呼叫2 /d2l/api/lp/1.4/19988/groupcategories/ 结果:200-OK

唯一的区别是OrgUnitID。版本、JSON和用户上下文都是相同的,但是我得到了两个不同的结果。我曾尝试过其他几门课程,我在某些方面取得了成功,但并非全部;始终接收403作为错误

经过一些调查,我相信我已经发现成功的课程和返回403的课程之间有两个明显的区别

  • 2012年4月之前开设的课程都是成功的,之后的课程都是失败的
  • 组织单元ID为5位数的课程是成功的,任何6位数的课程似乎都会失败
  • 因此,我的想法是,我们要么在2012年3月底/4月初应用了一个补丁,该补丁以某种方式改变了课程在创建时的标记方式,要么该服务只接受5位数(或更少?)的组织ID


    我希望有人能提供一些见解,或者验证他们在6位数以上的OUID和组类别创建方面没有问题

    进一步查看关于的文档,我发现403响应可能有3种情况:

  • 响应正文包含超出范围的时间戳
  • 响应正文包含无效令牌
  • 应用程序或调用用户上下文没有尝试的操作所需的权限
  • 有鉴于此,我仔细查看了响应头,发现问题实际上是#2“无效令牌”,而不是我假设的#3

    进一步研究我的代码,我使用的用户定义的SHA256函数似乎产生了错误的哈希/签名,而被哈希的数据正好是55个字符长(是的,我知道这听起来有多疯狂)。临时解决方法是用前导零填充我的Orgid,这样我的请求实际上看起来也类似:

    /d2l/api/lp/1.4/00350110/groupcategories/

    谢天谢地,这似乎是可行的,而且在不久的将来是可以接受的。长期的解决方案是用更可靠的东西取代我的SHA256功能


    我在开发中使用Colfusion 7MX,它没有本机SHA256哈希函数,因此使用了用户定义的函数

    公用事业用户是否明确注册了呼叫成功的课程,并且仅通过级联注册注册了呼叫失败的课程?出于某种原因,公用事业用户在组织单元组之间的注册方式(不同的角色类型)也可能不同?