Поделиться в соцсетях:

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

Что было сделано

Интеграция поддержки протокола OAuth2 Yahoo

Переключение версий OAuth для YahooНедавно Yahoo наконец-то внедрил поддержку протокола OAuth2, который намного легче и быстрее. Мы решили сохранить поддержку обращений к протоколу OAuth 1.0 для тех у кого уже успешно функционируют старые приложения и сделали специальный переключатель версий этих протоколов в настройках Yahoo (кстати он включен в плагине по-умолчанию!), но мы все же настоятельно рекомендуем переводить Ваши приложения на протокол OAuth 2.0.

Подключение к протоколу OAuth 2.0 у Yahoo имеет свои особенности

Согласно документации, как и во всех социальных сетях, Вам необходимо создать приложение для авторизации, далее необходимо сформировать ссылку с GET-параметрами от URL https://api.login.yahoo.com/oauth2/request_auth:

  • client_id — Consumer Key из данных Вашего приложения
  • redirect_uri — Ваша ссылка, которая будет принимать code
  • response_type — должно быть значение code
  • stateнеобязательный параметр, который будет передан в redirect_uri при успешном выполнении запроса
  • languageнеобязательный параметр, язык интерфейса

После получения code в GET-параметре, необходимо использовать его для построения запроса получения access token. Для этого необходимо построить POST запрос к URL https://api.login.yahoo.com/oauth2/get_token с параметрами:

  • client_id — Consumer Key из данных Вашего приложения
  • client_secret — Consumer Secret из данных Вашего приложения
  • redirect_uri — тот же redirect_uri что и при запросе code
  • code — параметр, полученный при первоначальном GET-запросе
  • grant_type — должен быть authorization_code

Здесь важной особенностью этого запроса является, что в header CURL-запроса необходимо подставить строку с base64 преобразованием по стандарту RFC 2617, а строка должна складываться путем конкатенации client_id:client_secret. На деле это означает что в CURL-запросе необходимо передавать CURLOPT_USERPWD таким образом:
curl_setopt($curl_init_var, CURLOPT_USERPWD, "your_client_id_consumer_key:your_client_secret");

При успешном запросе ответ придет в виде json, например такой:
{"access_token":"Jzxbkqqcvjerh2IMxGFEE1cuaos--","token_type":"bearer","expires_in":3600,"refresh_token":"AOiRUlJn_qOmBQVGTmRpwcMKW3XDcipToOoH42wRoyWgJCfRFlA-","xoauth_yahoo_guid":"JT8FA3BQZA2OCE"}

Параметр xoauth_yahoo_guid Вам понадобится для окончательного запроса к данным пользователя. Этот GET-запрос строится с помощью подставления в URL Вашего xoauth_yahoo_guid:
https://social.yahooapis.com/v1/user/YOUR_XOAUTH_YAHOO_GUID/profile?format=json

При этом в header запроса нужно передать Authorization: Bearer YOUR_CODE

Далее возвращается json-строка, которая преобразуется в массив и его обрабатывает LenAuth.

Произвольный/свой порядок вывода кнопок

Произвольный порядок вывода кнопок авторизации LenAuthЭта идея была давно: дать пользователю Moodle самому строить порядок вывода кнопок / ссылок авторизации. Теперь в настройках LenAuth у каждого сервиса появилось поле «Порядок», который позволяет выстроить Ваш порядок вывода кнопок, Вам необходимо просто поставить нужный порядковый номер вывода кнопки. Обращаем Ваше внимание что все цифры у каждого сервиса должны быть уникальными, и их значение должны быть в пределах от 1 до 7. Порядок по-умолчанию строится так: Facebook, Google, Yahoo, Twitter, Вконтакте, Яндекс, Mail.ru.

Авторизация гостевых пользователей

Так как гостевые пользователи считаются залогиненными, то им кнопки авторизации не показывались, это заметил Mark Samberg и в репозитории плагина на GitHub кинул Pull Request. Мы внесли его правку в плагин, спасибо, Марк!

Обновление версии API ВКонтакте

Мы обновили версию API ВКонтакте с 5.27 до 5.33.

Что дальше будет с плагином

На наш взгляд, в плагине сделано абсолютно все что можно было бы сделать, новых идей нет, все реализованы. Поэтому мы переключимся на написание документации и отладке других плагинов для Moodle, по которым у нас есть наработки, ведь мы создаем / программируем / разрабатываем плагины для Moodle (блоки или модули). Но если у Вас есть идеи по дополнительным улучшениям для плагина, вы можете оставить свою идею в разделе «Issues» нашего репозитория на GitHub, а если Вы разработчик и уже знаете как реализовать Вашу идею, то кидайте Pull Request.

Комментарии 3
  • Artemiy
      

    Стоит упоминать в описании плагина что facebook ввел активацию приложений, теперь его нужно приводить в состояние продакшена вручную

  • Sergey
      

    Установил плагин lenauth в moodle 3.1.1+
    При первичном входе авторизованных в яндексе через плагин выдает ошибку Final request returns nothing и не создается учетная запись… при этом, авторизует через плагин существующие учетки с почтой яндекса. Настройки перепроверил множество раз… нужна помощь!

    • LMS Tech
        

      Разобрались, у Вас какая-то проблема с провайдером или настройками внутренней сети.

Напишите комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Ждем обратной связи для взаимовыгодного сотрудничества

Наша работа ориентирована на b2b сегмент. Мы стремимся качественно предоставлять весь спектр услуг, связанный с LMS Moodle, чтобы доходы клиентов и их удовлетворенность нашей работой были максимальными. Если у Вас возникли вопросы или предложения — пишите.

Откроется всплывающее окно

Напишите нам
Технологии программирования Moodle: CSS3, AngularJS, Bootstrap

© 2014–2016, ООО «Вебкор». Все права защищены.