udjin123
@udjin123
PHP, Golang, React

Битрикс24 коробка — ошибка OAuth авторизации, куда копать?

Есть битрикс24 коробка установленная на BitrixEnv
При попытке установить приложение, например Wazzup или обмене с 1С при авторизации приложения возвращает ошибку
NO_AUTH_DATA
Wrong authorization data

Куда копать?
  • Вопрос задан
  • 1823 просмотра
Решения вопроса 1
udjin123
@udjin123 Автор вопроса
PHP, Golang, React
В общем удалось дебагером докопаться для проблемы, возможно кому то пригодится.

Пару фактов. Битрикс имеет модульную структуру. В битриксе есть модуль REST Api.
При установке модуля можно зарегистрировать обработчики событий. При установке, в данном случае REST Api, регистрирует обработчики для разных вариантов авторизации
if(!\Bitrix\Main\ModuleManager::isModuleInstalled("oauth"))
		{
			$eventManager->registerEventHandler("rest", "onRestCheckAuth", "rest", "\\Bitrix\\Rest\\OAuth\\Auth", "onRestCheckAuth");
		}

		$eventManager->registerEventHandler("rest", "onRestCheckAuth", "rest", "\\Bitrix\\Rest\\APAuth\\Auth", "onRestCheckAuth");
		$eventManager->registerEventHandler("rest", "onRestCheckAuth", "rest", "\\Bitrix\\Rest\\SessionAuth\\Auth", "onRestCheckAuth");

которые потом при обращении к api и проверке перебираются в цикле и авторизуют в зависимости от параметров запроса.
foreach(GetModuleEvents('rest', 'OnRestCheckAuth', true) as $eventHandler)
		{
			$eventResult = ExecuteModuleEventEx($eventHandler, array($query, $scope, &$res));
			if($eventResult !== null)
			{
				return $eventResult;
			}
		}

Обращаем внимание что для регистрации обработчика авторизации через oAuth идет проверка на наличие установленного модуля
if(!\Bitrix\Main\ModuleManager::isModuleInstalled("oauth"))
    {
     $eventManager->registerEventHandler("rest", "onRestCheckAuth", "rest", "\\Bitrix\\Rest\\OAuth\\Auth", "onRestCheckAuth");
   }

Так вот получается что на момент установки модуля Rest его не было потому событие не зарегистрировало.

По хорошему помогла бы переустановка модуля Rest, но в битрикс24 коробка у него жесткие зависимости и этого сделать нельзя не удалив пол портала.
60003859766e3137963019.png

Пришлось руками зарегистрировать обработчик и все заработало.

Вывод - код битрикс как всегда на высоте, в деле создания проблем на ровном месте.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы