0

学校的应用程序开发人员(使用 Java)如何从 D2L 实例中导出成绩?

如果我正在构建一个需要使用实用程序帐户的 D2L Valence 应用程序(如描述的方法:https ://stackoverflow.com/a/9950523/680651 )来导出一堆成绩:

如何一次性配置appid和app key?

如何一次性配置用户 ID 和用户密钥?

我需要哪些 REST 调用才能实际获取班级列表并导出成绩?

4

1 回答 1

0

关于公用事业帐户:

我会考虑尝试使用讲师上下文,这样您就不必强制执行角色。但是,如果您确实使用公用事业帐户:

关于 AppID 和 AppKey 的一次性配置:

  1. 按照keytool 演练向 keytool 请求密钥
  2. 将从该工具通过 Desire2Learn 进行跟进,并通过您所在机构的批准联系人进行跟进,以确保应该启用该密钥。
  3. 启用后,您可以将这些密钥直接编译到您的 java 代码或资源文件(或 db)中。它们在几个地方的 java 库中使用,并允许您从 Desire2Learn管理可扩展性工具中打开或关闭单个应用程序。

关于实用程序帐户 userid 和 userkey 的一次性配置:

将入门示例转换为安装程序 可能最容易:

  1. 示例中使用的 auth 库可用于仅对您自己的实例进行身份验证(而不是提示输入主机名)。这将生成一个身份验证 URL,例如“https://my.host.name/d2l/auth/api/token?x_a=......”,应将其设置为“选择要运行的实用程序帐户”的步骤这个应用程序”。
  2. 调整 index.jsp 中的 java 示例并更改将 userid 和 userkey 保存到会话的行:

    session.setAttribute("userID", userContext.getUserId());

    session.setAttribute("userKey", userContext.getUserKey());

    而是将其保存到数据库中。

  3. 配置您的应用程序时,运行此程序并使用您要使用的实用程序帐户登录 D2L。登录完成后,将运行 index.jsp 代码并保存密钥。
  4. 这些键在 java 库中使用,并向 LMS 证明调用是在哪个用户上下文中进行的。

关于获取课程列表和课程成绩:

  1. 对于所有调用,我将使用名为 ID2LUserContext createAuthenticatedUri的操作,传入文档中注明的路径。
  2. 通过用户调用获取具有组织单位的讲师的组织单位(包括课程)

此电话的示例请求:

GET
https://valence.desire2learn.com/d2l/api/lp/1.0/enrollments/users/3667/orgUnits/?x_b=JgqB2bumFwQkWft-gUP8Qr&x_a=L2Hd9WvDTcyiyu5n2AEgpg&x_d=XeTMX5fliLPTJdtKqeE_a0esDmTriSC9Aq9sMtpoO00&x_c=2AhFhrwhv1RsIdshAMba0upiux7Bhz-znS-VqjXhQh8&x_t=1333565539
HTTP/1.1 Accept-Encoding: gzip,deflate User-Agent: Jakarta
Commons-HttpClient/3.1 Host: valence.desire2learn.com

(值 x_a、x_b、x_c、x_d 和 x_t 用于身份验证,如果您使用客户端库,则会自动添加)

3.这个调用最终会包含OrgUnitInfo 结构

这是原始响应:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Length: 17300
Content-Type: application/json; charset=UTF-8
Expires: -1
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Date: Wed, 04 Apr 2012 18:52:08 GMT

{"PagingInfo":{"Bookmark":"6789","HasMoreItems":true},"Items":[

<SNIP/>

{
         "OrgUnit":          {
            "Id": 6789,
            "Type":             {
               "Id": 3,
               "Code": "Course Offering",
               "Name": "Course Offering"
            },
            "Name": "In",
            "Code": "dSCL_101_ONGOING_01"
         },
         "Role":          {
            "Id": 71,
            "Code": null,
            "Name": "Instructor Role"
         }
      }    

<SNIP/>

4.OrgUnitInfo 结构中的 ID 可用于通过课程操作的成绩检索成绩

有关如何将文档资源转化为工作调用的背景信息,您需要查看文档约定

于 2012-04-05T11:57:23.280 回答