• Модуль: socialservices
  • Путь к файлу: ~/bitrix/modules/socialservices/classes/general/bitrix24.php
  • Класс: CBitrixOAuthInterface
  • Вызов: CBitrixOAuthInterface::getNewAccessToken
public function getNewAccessToken($refreshToken, $userId = 0, $save = false, $scope = array())
{
	if($this->appID == false || $this->appSecret == false)
	{
		return false;
	}

	if($scope != null)
	{
		$this->addScope($scope);
	}

	$httpClient = new BitrixMainWebHttpClient(array(
		"socketTimeout" => $this->httpTimeout
	));

	$result = $httpClient->get($this->portalURI."/oauth/token/".
		"?client_id=".urlencode($this->appID).
		"&grant_type=refresh_token".
		"&client_secret=".$this->appSecret.
		"&refresh_token=".$refreshToken.
		'&scope='.$this->getScopeEncode());

	$arResult = BitrixMainWebJson::decode($result);

	if(isset($arResult["access_token"]) && $arResult["access_token"] <> '')
	{
		$this->access_token = $arResult["access_token"];
		$this->accessTokenExpires = $arResult["expires_in"];
		$this->member_id = $arResult["member_id"];

		if(isset($arResult["refresh_token"]) && $arResult["refresh_token"] <> '')
		{
			$this->refresh_token = $arResult["refresh_token"];
		}

		if($save && intval($userId) > 0)
		{
			CUserOptions::SetOption('socialservices', 'bitrix24_task_planer_gadget_token', $this->access_token, false, $userId);
			CUserOptions::SetOption('socialservices', 'bitrix24_task_planer_gadget_token_expire', $this->accessTokenExpires + time(), false, $userId);
			CUserOptions::SetOption('socialservices', 'bitrix24_task_planer_gadget_refresh_token', $this->refresh_token, false, $userId);
		}

		return true;
	}
	return false;
}