С момента прошлого обновления функционала модуля авторизации для Moodle прошло уже около полугода и еще тогда были задумки по его улучшению, но время воплотить эти задумки появилось лишь в последние дни, которые частично и были потрачены на воплощение этих идей. Надо отметить что (тьфу-тьфу) за время нахождения плагина в официальном репозитории Moodle у пользователей не возникло особых проблем по работе с ним, вопросы обычно касались факторов, никак не касающихся функционала модуля, а больше проблем было с внутренними настройками их сервера, например, с настройками php.
Что было сделано
Интеграция поддержки протокола OAuth2 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.
Произвольный/свой порядок вывода кнопок
Эта идея была давно: дать пользователю 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.
Artemiy
Стоит упоминать в описании плагина что facebook ввел активацию приложений, теперь его нужно приводить в состояние продакшена вручную
Sergey
Установил плагин lenauth в moodle 3.1.1+
При первичном входе авторизованных в яндексе через плагин выдает ошибку Final request returns nothing и не создается учетная запись… при этом, авторизует через плагин существующие учетки с почтой яндекса. Настройки перепроверил множество раз… нужна помощь!
LMS Tech
Разобрались, у Вас какая-то проблема с провайдером или настройками внутренней сети.