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

	$httpClient = new BitrixMainWebHttpClient();

	$result = $httpClient->post(static::TOKEN_URL, array(
		"refresh_token"=>$refreshToken,
		"client_id"=>$this->appID,
		"client_secret"=>$this->appSecret,
		"grant_type"=>"refresh_token",
	));

	try
	{
		$arResult = BitrixMainWebJson::decode($result);
	}
	catch(BitrixMainArgumentException $e)
	{
		$arResult = array();
	}

	if(isset($arResult["access_token"]) && $arResult["access_token"] <> '')
	{
		$this->access_token = $arResult["access_token"];
		$this->accessTokenExpires = $arResult["expires_in"];
		if($save && intval($userId) > 0)
		{
			$dbSocservUser = BitrixSocialservicesUserTable::getList([
				'filter' => ['=USER_ID' => intval($userId), "=EXTERNAL_AUTH_ID" => static::SERVICE_ID],
				'select' => ["ID"]
			]);
			if($arOauth = $dbSocservUser->fetch())
				BitrixSocialservicesUserTable::update($arOauth["ID"], array("OATOKEN" => $this->access_token,"OATOKEN_EXPIRES" => time() + $this->accessTokenExpires));
		}
		return true;
	}
	return false;
}