Получение информации из API Moodle в качестве студента

В настоящее время я учусь в университете и каждый день использую Moodle. Я хотел бы получить доступ к некоторой доступной мне информации (например, информация о занятиях, которые я посещаю, какие задания должны быть выполнены и когда и т. д.)

Я провел некоторое исследование относительно API Moodle, но все это казалось ориентированным на опытного пользователя, который на самом деле использует Moodle (Мой университет).

Есть ли простой способ для меня, как для студента, получить информацию?

В моем приложении используется Node.js


person RonH    schedule 20.06.2017    source источник
comment
Если нет студенческого API, вы должны попробовать что-то вроде разбора html и...   -  person Parham Alvani    schedule 20.06.2017


Ответы (1)


Если ваш университет включил веб-службы для мобильного приложения, вы можете создать свой собственный токен API и вызывать веб-службы, используемые мобильным приложением. Если последние не включены, вам необходимо связаться со своим администратором, чтобы получить доступ к веб-службам.

Демонстрация с использованием 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"
}

Далее нам понадобится ваш userid, он будет использоваться при вызове других веб-сервисов. Вы можете получить userid, позвонив в веб-службу 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,

Теперь, когда у вас есть 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...
    }
]

Подведение итогов

Предварительные требования:

  • Веб-службы Mobile App должны быть включены.
  • Протокол REST должен быть включен.
  • Вам нужен токен API

Запрос:

  • Запросы направляются на YOURHOST/webservice/rest/server.php?moodlewsrestformat=json.
  • Запросов должно быть POST запросов
  • Запросы должны содержать wstoken: Ваш токен
  • Запросы должны содержать wsfunction: функция, которую вы вызываете
  • Тип запроса должен быть: application/x-www-form-urlencoded

Еще

Я значительно упростил, как это работает и какие есть альтернативы, но это должно помочь вам начать. Вам, вероятно, будет интересно просмотреть документацию для разработчиков, чтобы получить больше информации о доступных веб-сервисах:

person FMCorz    schedule 22.06.2017
comment
какова цель приваттокена? какой REST API возвращает вместе с токеном - person Rajinder; 27.08.2018
comment
Я считаю, что он используется для автоматического входа мобильного пользователя на сайт веб-сайта, поэтому пользователям не нужно повторно вводить свои логин и пароли для доступа к сайту Moodle. - person FMCorz; 27.08.2018