Вход через контакт , событие -перед созданием юзера. Удивительно но работает. И даже не в том виде, что заявлено. А заявлены , те что внизу написаны.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
dEventHandler("main", "OnBeforeUserAdd", Array("UserHandlers", "BeforeAdd")); class UserHandlers { function BeforeAdd(&$arFields) { if ( strlen($arFields['EXTERNAL_AUTH_ID']) > 0) { if ($arFields['EMAIL'] == '' && $arFields["LOGIN"] != '') $arFields['EMAIL'] = $arFields['LOGIN'] . '.not@real.email'; } } } |
Код рабочий!
Вот ссылка на методы before:https://dev.1c-bitrix.ru/api_help/main/events/onbeforeuseradd.php, after:https://dev.1c-bitrix.ru/api_help/main/events/onafteruseradd.php
Внимание !! ДАЛЬНЕЙШИЙ КОД И МЕТОДЫ У МЕНЯ НЕ СРАБОТАЛИ!!!
Странно то что методы что страницы разработчиков не работают. https://dev.1c-bitrix.ru/api_help/socialservices/events/index.php
Ниже приведены неработающие методы.
Событие | Вызывается | Метод | C версии |
---|---|---|---|
OnAfterSocServUserAdd | после добавления пользователя через соцсерсис | CSocServAuthDB::Add | 12.0.2 |
OnAfterSocServUserUpdate | после обновления данных пользователя | CSocServAuth::Update | 12.0.2 |
OnAuthServicesBuildList | при построении списка сервисов авторизации | CSocServAuthManager::__construct | 9.0.0 |
OnBeforeOpenIDAuthFinalRedirect | перед редиректом на сайт авторизованного через соцсервис пользователя | COpenIDClient::Authorize | 11.0.0 |
OnBeforeOpenIDUserAdd | перед добавлением пользователя через OpenID авторизацию | COpenIDClient::Authorize | 11.0.0 |
OnBeforeSocServUserDelete | перед удалением пользователя | CSocServAuth::Delete | 12.0.2 |
OnPublishSocServMessage | при публикации сообщения соцсервиса | CSocServAuthManager::PostIntoBuzz | 12.0.4 |
ниже пример нерабочего кода, если я не прав- отпишитесь в комментариях.
1 2 3 4 5 6 7 8 9 |
AddEventHandler("socialservices", "OnBeforeOpenIDAuthFinalRedirect", Array("CreateProfilClassCocset", "OnBeforeOpenIDAuthFinalRedirectHandler")); class CreateProfilClassCocset { // создаем обработчик события "OnAfterUserLogin" function OnBeforeOpenIDAuthFinalRedirectHandler(&$fields){ echo 124; die(); } } |
Если залезть в install.php модуля «socialservices», то можно увидеть какие события есть у модуля. Те, которые указаны в документации или в этой статье — там отсутствуют. А ещё часть этих событий относится к модулю «main» — http://prntscr.com/fom6t1 (вырезка из кода метода COpenIDClient::Authorize).
Вот и ответ на вопрос «Почему не работают события?».
Вот код метода — COpenIDClient::Authorize, который вызывается при авторизации (а если не найден — регистрирует) через соц.сервисы:
http://bxapi.ru/src/?module_id=socialservices&name=CSocServAuth%3A%3AAuthorizeUser
Если пробежаться по коду, там есть события.
Спасибо за конкретную ссылку, будет полезной)) Сейчас как раз статью по данной методике поиска обработчиков пишу)))
Вот описанная методика )) То-же что и вы написали, но другими словами http://ftask.ru/2017/06/27/%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B8-%D0%B2-bitrix-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BA%D0%B0-%D0%B8/
Дествительно, многих методов нет (
Нашел метод OnUserLoginSocserv — Но его нет в описанном api