Добавление дополнительных данных из соц сетей в основную запись
Я работаю с сайтом на системе 1С-bitrix, на котором реализована возможность авторизоваться через соц сети, с помощью модуля социальные сервисы. Немного посмотрев файловую структуру, я нашёл кастомный класс авторизации, который используется на данный момент
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
/**
* @global CMain $APPLICATION
* @global CUser $USER
* @var array $this ->arParams
* Parameters:
* AUTH_RESULT - Authorization result message
* NOT_SHOW_LINKS - Whether to show links to register page && password restoration (Y/N)
*/
class AuthAuthorize extends \CBitrixComponent{
/**
* {@inheritdoc}
*/
public function executeComponent(){
global $USER;
$this->socialAuthHandler();
if (!$USER->IsAuthorized() && CModule::IncludeModule("socialservices")) {
$oAuthManager = new CSocServAuthManager();
$arServices = $oAuthManager->GetActiveAuthServices(array(
'BACKURL' => $this->arResult['~BACKURL'],
'FOR_INTRANET' => $this->arResult['FOR_INTRANET'],
));
if (!empty($arServices)) {
$this->arResult["AUTH_SERVICES"] = $arServices;
if (
isset($_REQUEST["auth_service_id"]) &&
$_REQUEST["auth_service_id"] <> '' &&
isset($this->arResult["AUTH_SERVICES"][$_REQUEST["auth_service_id"]])
) {
$this->arResult["CURRENT_SERVICE"] = $_REQUEST["auth_service_id"];
$_SESSION['SOCIAL_AUTH'] = true;
if (!isset($_REQUEST["auth_service_error"]) || $_REQUEST["auth_service_error"] == '') {
$oAuthManager->Authorize($_REQUEST["auth_service_id"]);
}
}
}
}
$this->IncludeComponentTemplate();
}
protected function socialAuthHandler()
{
if (!$_SESSION['SOCIAL_AUTH']) {
return;
}
$cUser = new \CUser();
$userId = $cUser->GetID();
$user = $cUser->GetByID($userId)->Fetch();
if (!$user['PERSONAL_MOBILE'] && $user['EXTERNAL_AUTH_ID']) {
if ($cUser->IsAuthorized()) {
$cUser->Logout();
}
$this->arResult['CONFIRM_PHONE_USER_ID'] = $userId;
}
unset($_SESSION['SOCIAL_AUTH']);
}
}
Задача стоит такая - нужно, чтобы пользователь, будучи авторизованным, мог через API вконтакте дозаполнить свои, уже существующие учётные данные, данными из соц сети. Проблема на данный момент для меня заключается в том, что я не знаю, как именно выполняется процесс авторизации и регестрации через компоненты битрикса, потому что я почти не знаю битрикс. В целом, если бы я писал всё сам, то просто добавил бы нужные поля в базу, и делал бы апдейт записи с нужным id недостоющими полями, приходящими из соц сети. Понимаю, что при работе с CMS нужно использовать средства CMS, поэтому пришёл сюда за советом, как можно решить данный вопрос средствами битрикса?