作为学生从Moodle API获取信息

我目前是大学的学生,每天都在使用Moodle。 我想访问一些可用的信息(例如,我正在学习的课程的信息,哪些作业到期,何时等)

我对Moodle的API进行了一些研究,但是它似乎都是面向实际运行Moodle(我的大学)的高级用户。

作为学生获取信息,有没有简单的方法?

我的应用程序使用Node.js

如果您的大学为移动应用程序启用了Web服务,则可以生成您自己的API令牌并调用移动应用程序使用的Web服务。 如果后者未启用,则必须联系pipe理员以获取Web服务访问权限。

使用moodle.org进行演示

首先,让我们得到一个API令牌(用您的密码replace$PASSWORD ):

 $ curl -d username="fmcorz" -d password="$PASSWORD" 'https://moodle.org/login/token.php?service=moodle_mobile_app' { "token":"SNIPTOKEN", "privatetoken":"SNIPPRIVATE" } 

接下来,我们需要你的userid ,它会在整个其他的web服务调用中使用。 您可以通过调用Web服务core_webservice_get_site_info来获取您的userid 。 确保用上面获得的令牌replace$TOKEN

 $ curl -d wstoken="$TOKEN" -d wsfunction=core_webservice_get_site_info 'https://moodle.org/webservice/rest/server.php?moodlewsrestformat=json' | python -m json.tool | grep userid "userid": 1451616, 

现在你有了你的userid ,我们可以申请你所注册的课程。

 $ curl -d wstoken="$TOKEN" -d wsfunction=core_enrol_get_users_courses -d userid=1451616 'https://moodle.org/webservice/rest/server.php?moodlewsrestformat=json' | python -m json.tool [ { ...snip... "fullname": "Moodle in English", "id": 5, ...snip... }, { ...snip... "fullname": "Moodle en fran\u00e7ais", "id": 20, ...snip... }, { ...snip... "fullname": "Moodle Certification", "id": 48, ...snip... } ] 

重温”

先决条件:

  • 移动应用程序的 web服务必须启用
  • REST协议必须启用
  • 您需要一个API令牌

查询:

  • 请求是对YOURHOST/webservice/rest/server.php?moodlewsrestformat=json
  • 请求必须是POST请求
  • 请求必须包含wstoken :您的令牌
  • 请求必须包含wsfunction :您正在调用的函数
  • 请求types必须是: application/x-www-form-urlencoded

更多

我已经大大地简化了它的工作原理和替代scheme,但是这应该让你开始。 您可能有兴趣查看开发人员文档以获取有关可用Web服务的更多信息:

  • Web服务开发人员文档
  • Web服务function列表 (可能不会经常更新)
Interesting Posts