2015-06-12 47 views
0

我試圖動態地創建一組類,在一個療程使用以下服務:創建集團類別 - D2L價

[/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-Forbidden。

這裏是(簡化的)請求:

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

來電2 /d2l/api/lp/1.4/19988/groupcategories/ 結果:200-OK

唯一的區別是OrgUnitID。版本,JSON和用戶上下文都是一樣的,但我得到2個不同的結果。我已經嘗試過其他幾門課程,並且再一次,我在一些但不是全部方面取得了成功;總是收到403作爲錯誤。

經過一番調查,我相信我已經發現,成功的課程和那些只是2012年4月前返回創造403

  1. 課程之間的2個不同的差異是成功的,任何事後失敗
  2. 課程,一個5位數的組織單位ID是成功的,任何有6位數字的似乎都失敗了。

所以我的想法是,我們要麼採用2012一四月貼片月下旬/早期這在某種程度上改變了課程,如何在創建標記,或以某種方式只有5位(或更少?)組織ID是由服務接受。

我希望有人可以提供一些見解或驗證他們有6+數字OUID和組類別創建沒有問題。

+0

實用程序用戶是否明顯地註冊了調用成功的課程,並且只在調用失敗的課程中通過_cascading enrollment_註冊? –

+0

也可能出於某種原因,實用程序用戶在組織單位組之間以不同方式註冊(不同角色類型)? –

回答

0

此外檢討API Responses - Disposition and error handling我意識到文檔存在3種可能的情況下爲403響應:

  1. 響應體中包含時間戳出
  2. 響應體中包含無效令牌
  3. 應用程序或調用的範圍用戶上下文沒有所需的權限嘗試操作

鑑於此,我仔細看了一下resp onse頭,並意識到這個問題實際上是#2「無效的令牌」,而不是我所假設的#3。

調查我的代碼進一步它似乎用戶定義SHA256函數我正在使用產生一個不正確的哈希/簽名時,數據被哈希是55個字符長(是的,我知道這聽起來有多瘋狂)。臨時解決辦法是墊我OrgIDs帶前導零的,所以我的要求實際上類似於太多的東西:

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

值得慶幸的是,這似乎工作,並且在不久的將來可以接受。長期的解決方案是用更可靠的東西替換我的SHA256功能。

我爲我的開發使用了Colfusion 7MX,它沒有本機SHA256散列函數,因此使用了用戶定義的函數。