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

Работа с 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-2024, «1С-Битрикс», 2024