Используя Moodle Web Service (REST) call core_user_get_users_by_field
я успешно получаю информацию о пользователе. Одним из возвращаемых полей является profileimageurl
который ссылается на мое изображение профиля пользователя и выглядит следующим образом:
http://my_moodle_server/pluginfile.php/89/user/icon/f1
К сожалению, эта ссылка работает только в браузере, где я уже вошел в систему, иначе он будет перенаправлен на стандартный значок пользователя (серый анонимный объект).
Поэтому, чтобы получить реальную форму изображения клиентского приложения, использующего веб-службы moodle, я думаю, что мне нужно вызвать core_files_get_files
и передать правильные значения. Поэтому я попытался переназначить эту ссылку на вызовы paramenters следующим образом:
contextid: 89
component: "user"
filearea: "icon"
itemid: 0
filepath: "/"
filename: "f1.png" (also tryed without .png)
and of course my valid token
но все, что я получаю, это:
{"parents":[],"files":[]}
Параметры кажутся формально правильными (иначе я бы получил исключение), но я получаю только пустой ответ, который говорит мне, что некоторые значения неверны.
Хорошо, я нашел решение своей проблемы. Я также размещаю ответ здесь, потому что не так много информации о веб-сервисе Moodle...
Прежде всего, core_files_get_files
не так... он будет показывать только информацию о файлах, он не даст вам фактического содержимого файла (двоичного).
К счастью, есть эквивалентный URL-адрес, который будет использоваться при вызове из внешнего клиентского приложения:
http://my_moodle_server/ webservice/pluginfile.php
Он принимает те же параметры/формат, что и http://my_moodle_server/pluginfile.php, и, кроме того, вы также можете передать токен для аутентификации веб-сервиса.
Поэтому поле profileimageurl
возвращаемое core_user_get_users_by_field
выглядит следующим образом:
http://my_moodle_server/pluginfile.php/89/user/icon/f1
можно превратить в
http://my_moodle_server/webservice/pluginfile.php/89/user/icon/f1?token=my_web_service_token
Также обратите внимание, что требуется добавить параметр ?token=