Работа в контексте текущего пользователя

Если вы разрабатываете интеграции для Битрикс24 с помощью AI-инструментов (Codex, Claude Code, Cursor), подключите MCP-сервер, чтобы ассистент использовал официальную REST-документацию.

Стандартно библиотека CRest работает под пользователем, установившим приложение. Но бывают ситуации, когда необходимо выполнить запрос к порталу Битрикс24 под пользователем, чьи токены пришли на страницу в POST. Например, когда пользователь открыл встройку вашего приложения. Для этого можно пронаследовать методы класса CRest:

require_once(__DIR__ . '/crest.php');
        class CRestCurrent extends CRest
        {
            protected static $dataExt = [];
            protected static function getSettingData()
            {
                $return = static::expandData(file_get_contents(__DIR__ . '/settings.json'));
                if(is_array($return))
                {
                    if(!empty(static::$dataExt))
                    {
                        $return['access_token'] = htmlspecialchars(static::$dataExt['AUTH_ID']);
                        $return['domain'] = htmlspecialchars(static::$dataExt['DOMAIN']);
                        $return['refresh_token'] = htmlspecialchars(static::$dataExt['REFRESH_ID']);
                        $return['application_token'] = htmlspecialchars(static::$dataExt['APP_SID']);
                    }
                    else
                    {
                        $return['access_token'] = htmlspecialchars($_REQUEST['AUTH_ID']);
                        $return['domain'] = htmlspecialchars($_REQUEST['DOMAIN']);
                        $return['refresh_token'] = htmlspecialchars($_REQUEST['REFRESH_ID']);
                        $return['application_token'] = htmlspecialchars($_REQUEST['APP_SID']);
                    }
                }
                return $return;
            }
            public static function setDataExt($data)
            {
                static::$dataExt = $data;
            }
        }
        

После этого вы можете подключать файл с новым классом в своем коде и использовать методы работы текущего пользователя, когда на странице есть токены.

Проверить работу можно вызвав метод:

$result = CRestCurrent::call('user.current');
        
        echo '<pre>';
            print_r($result);
        echo '</pre>';