Как сделать свое открытое апи на Битрикс24
Всем привет, задача - создание открытого api на битрикс24.
Все хорошо, но при подключении пролога на все входящие запросы возвращается страница авторизации
Как это избежать?
Вот код, если отключу пролог, то все нормально, но мне нужен пролог, чтоб взаимодействовать с методами Битрикс
Ответы (2 шт):
Автор решения: Konstantin Likhachev
→ Ссылка
Если я верно понял вашу задачу, то самый правильный путь - это добавить свои методы в REST Битрикс24.
- Навешиваете обработчик на событие
OnRestServiceBuildDescription
- Описываете там методы в нужном вам scope (можно в своем)
<?php
use Bitrix\Main\ArgumentException;
use Bitrix\Main\EventManager;
use Bitrix\Main\LoaderException;
use Bitrix\Main\ObjectPropertyException;
use Bitrix\Main\SystemException;
use Bitrix\Rest\RestException;
class MyRest
{
/**
* Навешивает обработчик для добавления методов REST API
*
* @return void
*/
public static function init(): void
{
$eventManager = EventManager::getInstance();
$eventManager->addEventHandlerCompatible("rest", "OnRestServiceBuildDescription", function () {
return [
'myrest' => [
'myrest.something.get' => [
'callback' => [__CLASS__, 'getSomething'],
'options' => [],
],
'myrest.something.set' => [
'callback' => [__CLASS__, 'setSomething'],
'options' => [],
],
],
];
});
}
public static function getSomething($query, $n, \CRestServer $server): array
{
// ...
}
public static function setNotifications($query, $n, \CRestServer $server): array
{
$somethingId = $query['something_id'];
// ...
}
}
Где-нибудь в init.php вызываете MyRest:init();
Документация https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=99&LESSON_ID=7985&LESSON_PATH=8771.5380.7985