• Модуль: socialservices
  • Путь к файлу: ~/bitrix/modules/socialservices/classes/general/box.php
  • Класс: CBoxOAuthInterface
  • Вызов: CBoxOAuthInterface::GetAccessToken
public function GetAccessToken($redirect_uri)
{
	$token = $this->getStorageTokens();

	if(is_array($token))
	{
		if(!$this->code)
		{
			$this->access_token = $token["OATOKEN"];
			$this->accessTokenExpires = $token["OATOKEN_EXPIRES"];

			if($this->checkAccessToken())
			{
				return true;
			}
			elseif(isset($token["REFRESH_TOKEN"]))
			{
				if($this->getNewAccessToken($token["REFRESH_TOKEN"], $token["USER_ID"], true))
				{
					return true;
				}
			}
		}

		$this->deleteStorageTokens();
	}

	if($this->code === false)
	{
		return false;
	}

	$h = new HttpClient();
	$result = $h->post(static::TOKEN_URL, array(
		"code"=>$this->code,
		"client_id"=>$this->appID,
		"client_secret"=>$this->appSecret,
		"redirect_uri"=>$redirect_uri,
		"grant_type"=>"authorization_code",
	));

	$this->oauthResult = Json::decode($result);

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

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

		$_SESSION["OAUTH_DATA"] = array(
			"OATOKEN" => $this->access_token,
		);

		return true;
	}
	return false;
}