Итак, если модуль установлен и настроен, то посетитель в закрытом разделе увидит стандартную форму авторизации. Форма, помимо внутреннего логина и пароля, предлагает выбрать один из внешних сервисов авторизации:
Сервисы можно условно поделить на две группы: одни являются провайдерами OpenID, другие работают по собственным протоколам авторизации.
Если сервис использует OpenID, то выводится форма, куда пользователь может ввести свой openid identity. Для удобства мы предлагаем вводить не полный идентификатор, а только специфичную для сервиса часть. Например:
Для социальных сетей выводится просто кнопка, открывающая диалог авторизации внешнего сервиса:
Внешний вид диалога авторизации зависит от сервиса:
Диалог Facebook.
Диалог Мой Мир@mail.ru.
После успешной аутентификации пользователь возвращается на сайт и авторизуется. Если это первый вход пользователя, то он добавляется в список пользователей сайта (с установленным значением поля "Тип авторизации", равным сервису авторизации).
Давайте посмотрим, что администратор сайта должен настроить, чтобы сервисы авторизации стали доступны посетителям.
После установки обновления модуль уже инсталлирован в системе. Если до обновления в настройках ядра уже был разрешен OpenID или Live ID, то соответствующие сервисы уже доступны.
Управлять сервисами можно в настройках модуля "Социальные сервисы". Там можно включать сервисы, сортировать их, настраивать необходимые параметры. Сервисы OpenID не требуют дополнительных настроек.
Обратите внимание, что для сервисов ВКонтакте, Мой мир@mail.ru, Twitter и Facebook требуется зарегистрировать на этих сервисах приложение (ссылки указаны).
При настройке приложений обращайте внимание на параметры типа "адрес сайта", "домен" - они чрезвычайно важны для правильной работы сервисов. Чаще всего авторизация будет работать и для поддоменов.
Настройки ВКонтакте.
Настройки Мой Мир@mail.ru.
Настройки Twitter.
Настройки Facebook.
На что еще требуется обратить внимание при настройке проекта?
- Некоторые сервисы требуют обращения только по HTTPS. Поэтому крайне желательно, чтобы php был собран с библиотекой openssl.
- Если на проекте используются различного вида редиректы (mod_rewrite), убедитесь, что при редиректе не перекодируются параметры GET.
Обработка и вывод социальных сервисов добавлены в стандартные компоненты system.auth.authorize и system.auth.form. В шаблоне компонента system.auth.authorize блок соцсервисов выводится с помощью компонента socserv.auth.form:
<?if($arResult["AUTH_SERVICES"]):?> <? $APPLICATION->IncludeComponent("bitrix:socserv.auth.form", "", array( "AUTH_SERVICES"=>$arResult["AUTH_SERVICES"], "CURRENT_SERVICE"=>$arResult["CURRENT_SERVICE"], "AUTH_URL"=>$arResult["AUTH_URL"], "POST"=>$arResult["POST"], ), $component, array("HIDE_ICONS"=>"Y") ); ?> <?endif?> |
"Маленькая" форма авторизации.
"Всплывающая" форма авторизации.
Реализован такой подход с помощью двух вызовов компонента socserv.auth.form с разными шаблонами:
<? $APPLICATION->IncludeComponent("bitrix:socserv.auth.form", "icons", array( "AUTH_SERVICES"=>$arResult["AUTH_SERVICES"], "SUFFIX"=>"form", ), $component, array("HIDE_ICONS"=>"Y") ); ?> |
<?if($arResult["AUTH_SERVICES"]):?> <? $APPLICATION->IncludeComponent("bitrix:socserv.auth.form", "", array( "AUTH_SERVICES"=>$arResult["AUTH_SERVICES"], "AUTH_URL"=>$arResult["AUTH_URL"], "POST"=>$arResult["POST"], "POPUP"=>"Y", "SUFFIX"=>"form", ), $component, array("HIDE_ICONS"=>"Y") ); ?> <?endif?> |
Как всегда, вы можете кастомизировать вывод стандартных компонентов. Самое доступное - это переопределить стили CSS в шаблоне сайта. Затем, вы можете кастомизировать шаблоны компонента socserv.auth.form.
Список социальных сервисов является программно-расширяемым. При построении списка сервисов вызывается событие "OnAuthServicesBuildList" модуля "socialservices". Обработчик события должен вернуть массив вида:
AddEventHandler("socialservices", "OnAuthServicesBuildList", array("CSocServFacebook", "GetDescription")); class CSocServFacebook extends CSocServAuth { const ID = "Facebook"; public function GetDescription() { return array( "ID" => self::ID, "CLASS" => "CSocServFacebook", "NAME" => "Facebook", "ICON" => "facebook", ); } } |
public function GetSettings() { //массив опций, как он используется в option.php модулей return array( array("facebook_appid", GetMessage("socserv_fb_id"), "", Array("text", 40)), array("facebook_appsecret", GetMessage("socserv_fb_secret"), "", Array("text", 40)), array("note"=>GetMessage("socserv_fb_sett_note")), ); } public function GetFormHtml($arParams) { return 'Ваш HTML для формы'; } public function Authorize() { //собственно код для авторизации пользователя } |
Таково наше первое знакомство с модулем социальных сервисов. Надеюсь, что использование модуля сделает работу с вашими проектами более удобной для ваших посетителей.
К сожалению, произошла ошибка при авторизации на сервисе. У меня с mail.ru не хочет авторизоваться.
С чем может быть связана эта ошибка?
Должен сказать, что модуль "Социальные сервисы" создал кучу проблем. Модуль "рожает" массу дублей страниц (примерно 12-30 дублей к каждой оригинальной) при посещении страниц авторизованным пользователем и ошибках авторизации (с прибавлением к адресу к примеру *.html?auth_service_id=vk/mail/прочие соцсети&auth_service_error*), которые Google прекрасно индексирует и держит в поиске (запрет в роботс, изменения параметров и удаление урл в ГуглВебмастере тоже с трудом помогают в их ликвидации). В общем, санкции за дубли, пессимизация, потеря уникальности контента и пр. На сайте в несколько десятков тысяч страниц геморрой увеличивается до космических размеров. Последний алгоритм Google "пингвин", меня труханул по полной из-за этого "чудо-модуля".
БУДЬТЕ ОСТОРОЖНЕЕ ПРИ ЕГО ИСПОЛЬЗОВАНИИ!!!
Вы просто не представляете сколько сайтов запороли сим [сплошной мат]
Резюмирую:
Битрикс: Открываем социальные сервисы -> И нихера не работает! Отличный модуль: нерабочий + доставляющий проблемы с поисковиками + дырявый. Все в стиле 1ass-bitrix
Не правда ли, доставляют позиции, начиная с 5?
Версия Бизнес.
Указанный redirect_uri не зарегистрирован в настройках приложения.
redirect_uri:
---
Не знаете в чем дело?
На сайте пользователь существует с таким же e-mail как в FB.
В настройках Главного Модуля, стоит галочка "Проверять E-mail на уникальность при регистрации:"
Но при этом на сайте создаётся новый пользователь с таким же e-mail.
в local/php_interface/init.php надо
/bitrix/modules/socialservices/classes/general/
файлы на эти классы.
facebook.php, vkontakte.php, odnoklassniki.php
У вас еще есть событие которые не отображено в документации. OnUserLoginSocserv событие авторизации через соц сети.