Документация для разработчиков
Темная тема

Работа с SDK CRest в контексте пользователя

Стандартно библиотека 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>';
© «Битрикс», 2001-2021, «1С-Битрикс», 2021
Наверх