Найти тему
Битрикс и не только

Битрикс: Авторизация через социальные сети

Недавно потребовалось реализовать авторизацию и регистрацию пользователей через социальные сети. В Битриксе, как заявляет документация, уже все для этого есть. Решил попробовать. Сделал приложение для ВК (пути создания приложения и получение данных описывать не буду, т.к. по этой теме уж написано много, да и интерфейсы приложений периодически обновляются), добавил полученный id приложения и секретный код в настройки модуля Социальные сервисы, перешел на форму авторизации, нажал на заветную кнопку и ... ничего не произошло. Только появилась надпись Array ниже кнопки социальной сети.
Как говорится, гугл в помощь, но не помогло.

Сначала собирался писать все сам, но потом вспомнил, что для Laravel находил чудесный пакет Socialite, а значит, есть шанс, что и для Битрикса, что-нибудь найдется. И нашлось: Bitrix Social Auth

В описании проекта подробно описана процедура установки пакета через composer. Если не знаете, как подружить Битрикс и composer, я уже об этом писал

В пакете уже имеется 4 адаптера для социальных сетей: VK, Facebook, Instagram и Google. Так же, возможно писать свои адаптеры. Пример, как это делать, автор описал в readme проекта.

Как подключить

В файл init.php добавляем следующий код:

use Dbogdanoff\Bitrix\Auth\Auth;
use Dbogdanoff\Bitrix\Auth\Adapter;

try {
Auth::addAdapter(new Adapter\Vk([
'client_id' => '123456',
'client_secret' => 'xxxxxxxxxx'
]));
Auth::addAdapter(new Adapter\Fb([
'client_id' => '123456',
'client_secret' => 'xxxxxxxxxx'
]));
Auth::addAdapter(new Adapter\Google([
'client_id' => '123456',
'client_secret' => 'xxxxxxxxxx'
]));
}
catch (\Exception $e) {
echo '<div class="adapter-error">' . $e->getMessage() . '</div>';
}

Указываем id и секретные коды ваших приложений.

Далее на странице авторизации или регистрации выводим ссылки на доступные адаптеры:

<ul class="auth__list">
<?$adapters = \Dbogdanoff\Bitrix\Auth\Auth::getAdapters();?>
<li class="auth__item">
<a class="auth__link" href="<?=$adapters['Facebook']->getAuthUrl()?>">
<svg class="auth__icon" width="20" height="20">
<use xlink:href="#facebook"></use>
</svg>
</a>
</li>
<li class="auth__item">
<a class="auth__link" href="<?=$adapters['VKontakte']->getAuthUrl()?>">
<svg class="auth__icon" width="22" height="22">
<use xlink:href="#vk"></use>
</svg>
</a>
</li>
...
</ul>

Нажимаем на выведенную ссылку нужной нам социальной сети. Подтверждаете доступ приложения к Вашим данным и все.

Далее заходим а админку Битрикса и видим, что создался новый пользователь.

Очень просто и удобно. В ближайшее время попробую сделать свой адаптер для Одноклассников. Полученный результатом обязательно поделюсь. Спасибо за внимание