MODX. HybridAuth для MODX Revolution

HybridAuth — сниппет, для создания на сайте возможности авторизироваться через социальные сети. 

Установка и настройка

  1. Загрузите и установите компоент.
  2. Зарегистрируйте сайт в соцсетях, через которые планируете осуществлять регистрацию (подробнее о регистрации ниже). Получите ключи и введите их в настройках админки, в разделе «Настройки системы», фильтруем по «hybridauth» и вбиваем полученные ключи.
  3. В нужном месте шаблона (чанка) сделайте вызов компонента
    <!-- простейший вызов -->
    [[!HybridAuth]]
    
    <!-- вызов с указанием нужных соц.сетей и группы в которую будут попадать пользователи -->
    [[!HybridAuth? 
        &providers=`Twitter,Facebook,Vkontakte`
        &groups=`Users:2`
    ]]

Получения ключа авторизации oAuth

Если ссылка оказалась битой, сервис регистрации сайта можо найти по слову oAuth.

При указании ответной страницы, в MODX используется путь

https://example.com/?hauth.done=Google

Адрес должен быть введен точно, вплоть до протокола https/http, иначе будет возникать ошибка.

Документация

HybridAuth ​

HybridAuth

Сниппет выводит форму для авторизации на сайте.

Параметры

Название По умолчанию Описание
&activeProviderTpl tpl.HybridAuth.provider.active Чанк для вывода иконки привязанного сервиса.
&addContexts Дополнительные контексты, через запятую. Например, &addContexts=`web,ru,en`
&groups Список групп для регистрации пользователя, через запятую. Можно указывать роль юзера в группе через двоеточие. Например, &groups=`Users:1` добавит юзера в группу "Users" с ролью "member".
&loginContext current context Основной контекст для авторизации. По умолчанию - текущий.
&loginResourceId 0 Идентификатор ресурса, на который отправлять юзера после авторизации. По умолчанию, это 0 - обновляет текущую страницу.
&loginTpl tpl.HybridAuth.login Этот чанк будет показан анонимному пользователю, то есть любому гостю.
&logoutResourceId 0 Идентификатор ресурса, на который отправлять юзера после завершения сессии. По умолчанию, это 0 - обновляет текущую страницу.
&logoutTpl tpl.HybridAuth.logout Этот чанк будет показан авторизованному пользователю.
&providerTpl tpl.HybridAuth.provider Чанк для вывода ссылки на авторизацию или привязку сервиса к учетной записи.
&providers all available Список провайдеров авторизации, через запятую. Все доступные провайдеры находятся тут {core_path}components/hybridauth/model/hybridauth/lib/Providers/. Например, ```&providers=`Google,Twitter,Facebook````.
&rememberme 1 Запоминает пользователя на долгое время. По умолчанию - включено.

Примеры

Сниппет нужно вызывать некэшированным, так как в зависимости от авторизации пользователя он выводит разные чанки.

При обычном вызове сниппет выведет всех провайдеров, зарегистрированных в системе

modx
[[!HybridAuth]]

Их можно ограничить, указав списком, через запятую:

modx
[[!HybridAuth?
  &providers=`Yandex,Google,Twitter,Facebook,Vkontakte`
]]

Авторизация в 2 контекста сразу:

modx
[[!HybridAuth?
  &providers=`Yandex,Google`
  &loginContext=`web`
  &addContexts=`en`
]]

Настройки провайдеров

Для каждого провайдера авторизации указывается отдельная системная настройка с префиксом ha.keys.:

Настройки провайдеров

Значение настройки - JSON массив, содержимое которого зависит от самого провайдера.

Например, для Google нужно указать id и secret, а для Twitter - key и secret. Так что, смотрите внимательно, какие настройки вам выдаст сервис при регистрации.

Ссылки на регистрацию у провайдеров

Для работы компонента нужно получить ключи от провайдера. Поэтому, вот несколько основных ссылок:

Контексты

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

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

Для правильной работы сниппета желательно включить дружественные url.

Возможные проблемы

Если не работает вход через Вконтакте, замените файл по адресу core/components/hybridauth/vendor/hybridauth/hybridauth/hybridauth/Hybrid/Providers/Vkontakte.php

на тот что находиться по ссылке:

raw.githubusercontent.com/hybridauth/hybridauth/v2/additional-providers/hybridauth-vkontakte/Providers/Vkontakte.php