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

Работа с 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>';

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Андрей Червяков
Сообщение не промодерировано, возможны ошибки и неточности.
Сейчас бы в самом sdk это сделать чтоб все обновились и пользовались а не в документации сниппеты размещать
© «Битрикс», 2001-2024, «1С-Битрикс», 2024