В системе Битрикс, начиная с 10-й версии в стандартный набор входит модуль «Социальные сервисы». Данный модуль дает возможность реализовать авторизацию на сайте посредством уже существующего аккаунта в социальных сетях.
Соц. сетей довольно много, и наиболее популярные из них в нашем сегменте интернета являются Вконтакте, Mail.ru, Twitter, и Facebook.
Функционал авторизации через социальные сети можно использовать что называется «из коробки», и по умолчанию авторизация может работать как надо. Изменения в работе стандартного функционала могут вести за собой некоторые нестыковки, что в конечном итоге сказывается на неработоспособности авторизации целом. С такой ситуацией пришлось столкнуться и мне, после некоторого времени поиска причину удалось найти.
Итак, авторизоваться через соц сети не удается, получается ошибка с перенаправлением:
?auth_service_id=Facebook&auth_service_error=1
?auth_service_id=Vkontakte&auth_service_error=1
Поиски по форумам позволили определить некоторые распространенные причины, из-за чего может быть такая ошибка.
1. В PHP не установлена библиотека OpenSSL
2. Присутствуют обязательные пользовательские поля
Проверить установку OpenSSL не трудно, достаточно выполнить функцию phpinfo() в скрипте и проверить наличие записей OpenSSL. Если они есть, значит идем дальше.
Как оказалось в моем случае, ранее производились изменения на форме регистрации, после чего для некоторых задач было заведено новое пользовательское поле. Поле было обязательным для заполнения, и кто-бы мог подумать, что именно это может стать причиной ошибки авторизации в соц. сетях.
Вникая в детали стало ясно, что при входе пользователя через социальные сети в системе битрикс по сути заводиться новая учетная запись. Учетная запись создается посредством API битрикса, в массиве добавляемых полей должны присутствовать обязательные поля, если их нет, то и учетную запись не удается завести, что в конечном итоге проявляется в виде таких ошибок. На этом пока всё, успехов!