dikey58
@dikey58
Самоучка - web-разработчик

Как развернуть REST API на 1С-Битрикс?

Я нашел файлик, как понимаю, для REST API, лежал он в /bitrix/modules/rest/services/rest/index.php. Его я себе скопировал в папку /rest/. Сделал к нему запрос http://domain.ru/rest/methods, он мне выдал wrong_authorization. Нашел я компонент rest.token, вывел его на странице /rest/auth/. При запросе http://domain.ru/rest/auth/ выдает wrong_client. В коде этого компонента полазил, но пока так и не понял как передать ему клиента и получить токен.
Вывел на странице еще компонент rest.authorize и обратился к странице http://domain.ru/rest/authorize/?client_id=1, но тут возникает ошибка:
No client credentials (0)
../bitrix/modules/rest/lib/oauth/client.php:167

Что дальше?
  • Вопрос задан
  • 2413 просмотров
Пригласить эксперта
Ответы на вопрос 3
@MaxKozlov
Источники мудрости
Rest API от Bitrix24
Статья от intervolga
Возможно, вариант решения через bitrix:rest.marketplace.localapp. У меня не заработало
Рабочее решение

https обязателен

  1. Предполагается что страничка секретная или даже одноразовая, только для получения хука
    /local/rest/index.php
    <?php require_once($_SERVER['DOCUMENT_ROOT'] . 
        "/bitrix/modules/main/include/prolog_admin.php"); ?>
       <div class="adm-workarea">
           <? $APPLICATION->IncludeComponent(
               "bitrix:rest.hook",
               ".default",
               [
                   "SEF_MODE" => "Y",
                   "SEF_FOLDER" => "/local/rest/",
                   "COMPONENT_TEMPLATE" => ".default",
                   "SEF_URL_TEMPLATES" => [
                       "list" => "",
                       "event_list" => "event/",
                       "event_edit" => "event/#id#/",
                       "ap_list" => "ap/",
                       "ap_edit" => "ap/#id#/",
                   ]
               ],
               false
           ); ?>
           <br>
           <a href="javascript:void(0)" class="adm-btn adm-btn-green"
               onclick="BX.PopupMenu.show('rest_hook_menu', this, [{
                  'href':'/local/rest/event/0/',
                  'text':'Исходящий вебхук'
               },{
                  'href':'/local/rest/ap/0/',
                  'text':'Входящий вебхук'
               }])">
               Добавить вебхук
           </a>
       </div>
    <? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php");

  2. в urlrewrite.php добавляем
    array(
       'CONDITION' => '#^/local/rest/#',
       'RULE' => '',
       'ID' => 'bitrix:rest.hook',
       'PATH' => '/local/rest/index.php',
    ),

  3. Надо убедиться, что urlrewrite.php битрикса отрабатывает ссылки на нашу страницу вида /local/rest/ap/0/
  4. Заходим на свежесозданную страницу, добавляем там свой входящий хук
  5. Получаем пару client_id / secret_id
  6. Используем в запросах вида
    https: //site.domain/rest/17607/p8n2dh2hf2nf258n/profile/

Ответ написан
pro6ka
@pro6ka
web developer
cyber-jet
@cyber-jet
Мой вариант реализации для собственного модуля. История мутная, слишком много вопросов, слишком мало ответов, документации для этого модуля в БУС до сих пор нет, лишь вот эти несколько абзацев, на предмет как можно пробросить свои контроллеры в REST Битрикс, удобно иметь схожие методы и схемы данных для SPA и приложения. Добавил в описание контроллера нужное, в адресной строке перешел к нужному методу и словил так-же wrong_authorization. Ни где нет описания как создавать токены непосредственно в БУС. Единственная зацепка, статья интерволги, и пример от MaxKozlov, с одной лишь разницей, другой путь к странице, не в /local/.., потому что это служебная папка для разработки, и не нужно ни чего добавлять в urlrewrite.php, так как в настройках модуля уже есть SEF_MODE = Y и массив шаблонов ссылок SEF_URL_TEMPLATES, только нужно сохранить код страницы в визуальном редакторе Битрикс(это важно), и нужные записи в urlrewrite.php пропишутся автоматом. После чего получилось создать входящий токен, но моего модуля в правах не было, выбрал iblock, в таблице базы данных с правами доступа к rest ручками переправил на название своего модуля, и всё заработал.

Переходим по ссылке:
https://сайт/rest/1/токен/имя:модуля.api.имякласса.метод
..и наслаждаемся результатом.

имя:модуля.api - defaultNamespace, указанный в контроллере - докумантация.

PS: Для понимания, то-же самое у меня получает SPA через интерфейс ajax
https://сайт/bitrix/services/main/ajax.php?action=имя:модуля.имякласса.метод
но там другая структура выполнения и вэб авторизация.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы