На сегодня одновременная работа REST-приложений на двух порталах с одним лицензионным ключом стандартно не предусмотрена.
Почему так?
Лицензия привязывается к домену портала на стороне OAuth-сервиса вендора. И стандартно одновременная работа REST-приложений на боевом и тестовом портале с одним ключом не поддерживается. Конечно, у Битрикс24 это уже в планах, но пока что можно обойтись временным решением.
Чтобы REST-интеграции на тестовом портале заработали корректно:
1. Заходим на тестовый портал под администратором.
2. Переходим: Административный раздел → Настройки → Инструменты → PHP-командная строка.
3. Выполняем этот код:
\Bitrix\Main\Loader::includeModule(’rest’);
$oldClientId = \Bitrix\Main\Config\Option::get(’rest’, ’service_client_id’, null);
$oldClientSecret = \Bitrix\Main\Config\Option::get(’rest’, ’service_client_secret’, null);
print_r(’old service_client_id: «’ . $oldClientId . ’»’);
print_r(’old service_client_secret: «’ . $oldClientSecret . ’»’);
\Bitrix\Main\Config\Option::delete(’rest’, [’name’ => ’service_client_id’]);
\Bitrix\Main\Config\Option::delete(’rest’, [’name’ => ’service_client_secret’]);
try {
\Bitrix\Rest\OAuthService::register();
\Bitrix\Rest\OAuthService::getEngine()->getClient()->getApplicationList();
} catch(\Bitrix\Main\SystemException $e) {
echo ’error register portal’;
echo «\n <br> \n»;
}
$newClientId = \Bitrix\Main\Config\Option::get(’rest’, ’service_client_id’, null);
$newClientSecret = \Bitrix\Main\Config\Option::get(’rest’, ’service_client_secret’, null);
if (
!is_null($oldClientId)
&& !is_null($oldClientSecret)
&& is_null($newClientId)
&& is_null($newClientSecret)
) {
\Bitrix\Main\Config\Option::set(’rest’, ’service_client_id’, $oldClientId);
\Bitrix\Main\Config\Option::set(’rest’, ’service_client_secret’, $oldClientSecret);
}
Что делает этот скрипт?
Он обновляет OAuth-привязку тестового портала на сервере https://oauth.bitrix.info. Дальше достаточно переустановить интеграционное приложение на тестовом портале и можно снова пробовать подключать интеграции. На боевом портале ничего не изменится — он продолжит работать как раньше.
Такой подход отлично подходит для тестирования. Но держите в голове — это временное решение. Если нужна стабильная работа двух контуров одновременно, лучше обсудить с вендором или интегратором варианты лицензирования.