Недавно потребовалось реализовать авторизацию и регистрацию пользователей через социальные сети. В Битриксе, как заявляет документация, уже все для этого есть. Решил попробовать. Сделал приложение для ВК (пути создания приложения и получение данных описывать не буду, т.к. по этой теме уж написано много, да и интерфейсы приложений периодически обновляются), добавил полученный 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>
Нажимаем на выведенную ссылку нужной нам социальной сети. Подтверждаете доступ приложения к Вашим данным и все.
Далее заходим а админку Битрикса и видим, что создался новый пользователь.
Очень просто и удобно. В ближайшее время попробую сделать свой адаптер для Одноклассников. Полученный результатом обязательно поделюсь. Спасибо за внимание