作为学生从Moodle API获取信息

Ron*_*onH 2 moodle node.js moodle-api

我目前是一所大学的学生,每天都在使用Moodle。我想访问一些可用的信息(例如,我正在上课的信息,应交的作业和时间等)

我对Moodle的API进行了一些研究,但所有这些似乎都针对实际运行Moodle(我的大学)的高级用户。

作为学生,我是否有一种简单的方法来获取信息?

我的应用程序使用Node.js

FMC*_*orz 6

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

演示使用moodle.org

首先,让我们获取一个API令牌($PASSWORD用您的密码代替):

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

接下来,我们需要您的userid,它将在其他所有Web服务调用中使用。您可以userid通过调用Web服务获取您的信息core_webservice_get_site_info。确保$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,
Run Code Online (Sandbox Code Playgroud)

现在,您拥有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...
    }
]
Run Code Online (Sandbox Code Playgroud)

概括'

先决条件:

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

查询:

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

更多

我已经大大简化了它的工作方式和替代方法,但这应该可以帮助您入门。您可能有兴趣查看开发人员文档以获取有关可用Web服务的更多信息: