• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/rest/synchronization/client.php
  • Класс: BitrixSaleRestSynchronizationClient
  • Вызов: Client::refreshToken
public function refreshToken($refreshToken)
{
	$result = new Result();

	if($refreshToken=='')
	{
		$result->addError(new Error('Refresh token is empty'));
		LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_EMPTY');
	}

	if(!$this->clientId || !$this->clientSecret)
	{
		$result->addError(new Error('No client credentials for refresh token'));
		LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_CLIENT_ID_EMPTY');
	}

	if($result->isSuccess())
	{
		$request = OAuthService::SERVICE_URL.'/oauth/token/'.'?'.http_build_query(
				[
					'grant_type'=>self::B24_APP_GRANT_TYPE,
					'client_id'=>$this->clientId,
					'client_secret'=>$this->clientSecret,
					'refresh_token'=>$refreshToken
				]);

		LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_REQUEST', var_export($request,true));

		$httpClient = $this->getHttpClient();
		$httpResult = $httpClient->get($request);

		LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_PROCESS_RESULT', var_export([
			'result'=>$httpResult,
			'status'=>$httpClient->getStatus()
		], true));

		$respons = $this->prepareResponse($httpResult);
		if($respons)
		{
			LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_PROCESS_RESULT_SUCCESS');

			if(isset($respons['error']))
			{
				$result->addError(new Error($respons['error_description'], mb_strtoupper($respons['error'])));
				LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_RESULT_ERROR');
			}
			else
			{
				$result->setData(['DATA'=>$respons]);
				LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_RESULT_SUCCESS', var_export($respons, true));
			}
		}
		else
		{
			$result->addError(new Error('Strange answer from Bitrix Service! ', 'STRANGE_ANSWER_REFRESH_TOKEN'));
			LoggerDiag::addMessage('CLIENT_REFRESH_TOKEN_PROCESS_RESULT_ERROR');
		}
	}

	return $result;
}