2013-01-04 82 views
1

我正嘗試使用其Valence API從第三方應用程序中修改D2L數據庫。我已經完成了一些操作,但我試圖創建一個新的用戶帳戶。我被告知,我正在工作的帳戶有權這樣做。嘗試創建D2L用戶帳戶時獲取無效令牌響應

我已經定義了一個JSON對象來保存我想要的值: { 「OrgDefinedId」: 「XX000TEST」, 「名字」: 「湯姆」, 「中間名」: 「」, 「姓」 : 「Foolery」, 「ExternalEmail」: 「[email protected]」, 「用戶名」: 「Tom.Foolery」, 「角色ID」: 「78」, 「IsActive」: 「真」, 「SendCreationEmail 「:」false「 }

我將上述文本複製到HTTP後緩衝區,然後調用以下鏈接: /d2l/api/lp/1.0/users/?

參數字符串包含Valence文檔中指定的ID和簽名(x_a,x_b等)。我假設授權值是正確的,因爲在其他的價值查詢中使用相同的算法時,我會得到正確的結果。

有關如何通過「無效令牌」消息的任何建議,將不勝感激。

--stein

回答

2

如果你得到一個403「無效令牌」消息,那麼你是不是出於某種原因,你形成x_a,x_b,x_c,或x_d認證令牌正確。我們在過去所看到的常見問題有:

  • 試圖重新使用x_c和或產生x_d簽名一個API調用另一個

  • 獲取令牌交換周圍:x_a是應用程序ID, x_c是應用SIG,x_b是用戶ID,和x_d是用戶西格

  • 使用錯誤的HTTP 方法(該方法是基底線爲簽名的組件之一)

  • 生成簽名
  • 不使用所有大寫字母在基底線的HTTP方法(成分應該是GETget

  • 不使用所有小寫字母在基底線的API的路線,或包括不正確的字符:例如,在您的問題中,您似乎暗示您將作爲路線的一部分傳入?;你不應該這樣做。在這種情況下,用於創建網址的基本字符串應該是POST&/d2l/api/lp/1.0/users/&1234567其中1234567應該與你產生並傳遞X_T

  • 使用提供API版本組件的API路線,但打電話時,使用其他時間戳被替換版本組件(即與/d2l/api/lp/1.0/...產生但/d2l/api/lp/1.1/...調用)

  • 在基底線使用不正確/不匹配的時間戳值(您用於即basestring時間戳應該在秒,並且是相同的時間戳作爲X_T值)

  • 當呼叫以前工作過,突然沒有電話的一個403無效令牌結果工作:用戶令牌可能已經過期,則需要重新驗證用戶

  • 當呼叫針對檢驗例如,當曾任職您嘗試移動到不同的LMS(例如產品實例),但呼叫沒有工作:也許在App ID /密鑰對沒有顯示出了這一新的LMS,或者你想使用的用戶ID /密鑰對從一個LMS到在不同的LMS生成簽名

而且請注意,您的JSON對象嚴格不正確形成:IsActiveSendCreationEmail屬性的值應分別爲truefalse,而不是"true""false",但服務器端的LMS解析器可能會原諒此問題。

如果沒有這些點的幫助,請隨時在我們的問題跟蹤打開的問題,或者聯繫我們的支持價的電子郵件地址,我們可以試着幫你過這個問題。

備註請注意,無效標記會將您返回403(但消息將是「無效標記」或「過期標記」或類似消息)。如果您的令牌正確生成,但您的主叫用戶上下文不允許創建一個用戶,那麼你會得到了403,但這次的消息將是「不允許」或「未授權」或類似。請務必仔細檢查什麼樣的403你要回來。

在此特定情況下,周圍創建用戶的權限是否有點棘手;不僅要你必須創建一個用戶權限,您還必須有權修改,你會被傳遞到在CreateUserData結構的API特性(OrgDefinedId,電子郵件等),你也必須能夠看到所有這些領域中的用戶信息隱私設置,你已經在組織級別......那些最後兩位已經在絆倒我們的一些客戶提供的,你必須有權限註冊用戶角色過去。

+1

這是可能通過使用做的一切,爲你的許多客戶端庫,以避免一些與生成簽名這個問題(外觀的情況下,URL生成,簽名算法後)。大多數用戶不需要生成自己的簽名,並排除了這些類型的問題。客戶端庫在:http://docs.valence.desire2learn.com/clients/index.html – Cadmium

+0

只是跟進這一點 - 基本的問題是,D2L服務器在SSL下運行,我沒有包括在HTTPS網址。當HTTP請求到達服務器時,它被重定向到HTTPS鏈接。這實際上適用於GET請求,但是這是一個POST,並且在重定向期間後緩衝區內容會丟失,因此它將被視爲另一個GET。由於服務器期待POST,結果是無效令牌錯誤。 – Steingo

+0

很高興知道。謝謝+ Steingo。 –

相關問題