public function refreshToken()
    {
        $token = $this->getAccessToken();

        try {
            $response = $this->httpClient->post(
                self::ACCESS_TOKEN_ENDPOINT,
                [
                    'refresh_token' => $token['refresh_token'],
                    'client_id' => $this->clientId,
                    'client_secret' => $this->clientSecret,
                    'grant_type' => 'refresh_token',
                ]
            );

            $responseBody = json_decode($response->getBody(), true);
        } catch (\Exception $e) {
            throw new AuthException('Request for refresh access token failed: ' . $e->getMessage(), $e->getCode());
        }

        $this->setAccessToken($responseBody);

        $this->sign();

        return $responseBody;
    }