Как сделать свое открытое апи на Битрикс24

Всем привет, задача - создание открытого api на битрикс24. Все хорошо, но при подключении пролога на все входящие запросы возвращается страница авторизации Как это избежать? введите сюда описание изображения

Вот код, если отключу пролог, то все нормально, но мне нужен пролог, чтоб взаимодействовать с методами Битрикс

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Konstantin Likhachev

Если я верно понял вашу задачу, то самый правильный путь - это добавить свои методы в REST Битрикс24.

  1. Навешиваете обработчик на событие OnRestServiceBuildDescription
  2. Описываете там методы в нужном вам 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

→ Ссылка
Автор решения: Firsov36

Вам нужно добавить константу

const NOT_CHECK_PERMISSIONS = true;
→ Ссылка