public function refreshToken($forceRefresh = false)
    {
        if (property_exists($this, "sdl") && $this->sdl == 0) {
            parent::__construct($this->xmlLoc, array('trace'=>1, 'exceptions'=>0));
        }
        try {
            $currentTime = new DateTime();
            if (is_null($this->getAuthTokenExpiration($this->tenantKey))) {
                $timeDiff = 0;
            } else {
                $timeDiff = $currentTime->diff($this->getAuthTokenExpiration($this->tenantKey))->format('%i');
                $timeDiff = $timeDiff  + (60 * $currentTime->diff($this->getAuthTokenExpiration($this->tenantKey))->format('%H'));
            }
            if (is_null($this->getAuthToken($this->tenantKey)) || ($timeDiff < 5) || $forceRefresh) {
                $url = $this->tenantKey == null
                        ? $this->baseAuthUrl."/v1/requestToken?legacy=1"
                        : $this->baseUrl."/provisioning/v1/tenants/{$this->tenantKey}/requestToken?legacy=1";

                $jsonRequest = new stdClass();
                $jsonRequest->clientId = $this->clientId;
                $jsonRequest->clientSecret = $this->clientSecret;
                $jsonRequest->accessType = "offline";
                if (!is_null($this->getRefreshToken($this->tenantKey))) {
                    $jsonRequest->refreshToken = $this->getRefreshToken($this->tenantKey);
                }
                $authResponse = ET_Util::restPost($url, json_encode($jsonRequest), $this);
                $authObject = json_decode($authResponse->body);
                //echo "auth:  \n";
                //print_r($authResponse);

                if ($authResponse && property_exists($authObject, "accessToken")) {
                    $dv = new DateInterval('PT'.$authObject->expiresIn.'S');
                    $newexpTime = new DateTime();
                    $this->setAuthToken($this->tenantKey, $authObject->accessToken, $newexpTime->add($dv));
                    $this->setInternalAuthToken($this->tenantKey, $authObject->legacyToken);
                    if (property_exists($authObject, 'refreshToken')) {
                        $this->setRefreshToken($this->tenantKey, $authObject->refreshToken);
                    }
                } else {
                    throw new Exception('Unable to validate App Keys(ClientID/ClientSecret) provided, requestToken response:'.$authResponse->body);
                }
            }
        } catch (Exception $e) {
            throw new Exception('Unable to validate App Keys(ClientID/ClientSecret) provided.: '.$e->getMessage());
        }
    }
public function refreshToken($forceRefresh = false)
    {
        if (property_exists($this, "sdl") && $this->sdl == 0) {
            parent::__construct($this->xmlLoc, array('trace'=>1, 'exceptions'=>0));
        }
        try {
            $currentTime = new DateTime();
            if (is_null($this->getAuthTokenExpiration($this->tenantKey))) {
                $timeDiff = 0;
            } else {
                $timeDiff = $currentTime->diff($this->getAuthTokenExpiration($this->tenantKey))->format('%i');
                $timeDiff = $timeDiff  + (60 * $currentTime->diff($this->getAuthTokenExpiration($this->tenantKey))->format('%H'));
            }
            if (is_null($this->getAuthToken($this->tenantKey)) || ($timeDiff < 5) || $forceRefresh) {
                $url = $this->tenantKey == null
                        ? $this->baseAuthUrl."/v1/requestToken?legacy=1"
                        : $this->baseUrl."/provisioning/v1/tenants/{$this->tenantKey}/requestToken?legacy=1";

                $jsonRequest = new stdClass();
                $jsonRequest->clientId = $this->clientId;
                $jsonRequest->clientSecret = $this->clientSecret;
                $jsonRequest->accessType = "offline";
                if (!is_null($this->getRefreshToken($this->tenantKey))) {
                    $jsonRequest->refreshToken = $this->getRefreshToken($this->tenantKey);
                }
                $authResponse = ET_Util::restPost($url, json_encode($jsonRequest), $this);
                $authObject = json_decode($authResponse->body);
                //echo "auth:  \n";
                //print_r($authResponse);

                if ($authResponse && property_exists($authObject, "accessToken")) {
                    $dv = new DateInterval('PT'.$authObject->expiresIn.'S');
                    $newexpTime = new DateTime();
                    $this->setAuthToken($this->tenantKey, $authObject->accessToken, $newexpTime->add($dv));
                    $this->setInternalAuthToken($this->tenantKey, $authObject->legacyToken);
                    if (property_exists($authObject, 'refreshToken')) {
                        $this->setRefreshToken($this->tenantKey, $authObject->refreshToken);
                    }
                } else {
                    throw new Exception('Unable to validate App Keys(ClientID/ClientSecret) provided, requestToken response:'.$authResponse->body);
                }
            }
        } catch (Exception $e) {
            throw new Exception('Unable to validate App Keys(ClientID/ClientSecret) provided.: '.$e->getMessage());
        }
    }
public function refreshToken ( $ forceRefresh = false ) { if ( property_exists ( $ this , "sdl" ) && $ this -> sdl == 0 ) { parent :: __construct ( $ this -> xmlLoc , array ( 'trace' => 1 , 'exceptions' => 0 ) ) ; } try { $ currentTime = new DateTime ( ) ; if ( is_null ( $ this -> getAuthTokenExpiration ( $ this -> tenantKey ) ) ) { $ timeDiff = 0 ; } else { $ timeDiff = $ currentTime -> diff ( $ this -> getAuthTokenExpiration ( $ this -> tenantKey ) ) -> format ( '%i' ) ; $ timeDiff = $ timeDiff + ( 60 * $ currentTime -> diff ( $ this -> getAuthTokenExpiration ( $ this -> tenantKey ) ) -> format ( '%H' ) ) ; } if ( is_null ( $ this -> getAuthToken ( $ this -> tenantKey ) ) || ( $ timeDiff < 5 ) || $ forceRefresh ) { $ url = $ this -> tenantKey == null ? $ this -> baseAuthUrl . "/v1/requestToken?legacy=1" : $ this -> baseUrl . "/provisioning/v1/tenants/{$this->tenantKey}/requestToken?legacy=1" ; $ jsonRequest = new stdClass ( ) ; $ jsonRequest -> clientId = $ this -> clientId ; $ jsonRequest -> clientSecret = $ this -> clientSecret ; $ jsonRequest -> accessType = "offline" ; if ( ! is_null ( $ this -> getRefreshToken ( $ this -> tenantKey ) ) ) { $ jsonRequest -> refreshToken = $ this -> getRefreshToken ( $ this -> tenantKey ) ; } $ authResponse = ET_Util :: restPost ( $ url , json_encode ( $ jsonRequest ) , $ this ) ; $ authObject = json_decode ( $ authResponse -> body ) ; //echo "auth:  \n"; //print_r($authResponse); if ( $ authResponse && property_exists ( $ authObject , "accessToken" ) ) { $ dv = new DateInterval ( 'PT' . $ authObject -> expiresIn . 'S' ) ; $ newexpTime = new DateTime ( ) ; $ this -> setAuthToken ( $ this -> tenantKey , $ authObject -> accessToken , $ newexpTime -> add ( $ dv ) ) ; $ this -> setInternalAuthToken ( $ this -> tenantKey , $ authObject -> legacyToken ) ; if ( property_exists ( $ authObject , 'refreshToken' ) ) { $ this -> setRefreshToken ( $ this -> tenantKey , $ authObject -> refreshToken ) ; } } else { throw new Exception ( 'Unable to validate App Keys(ClientID/ClientSecret) provided, requestToken response:' . $ authResponse -> body ) ; } } } catch ( Exception $ e ) { throw new Exception ( 'Unable to validate App Keys(ClientID/ClientSecret) provided.: ' . $ e -> getMessage ( ) ) ; } }
Gets the refresh token using the authentication URL.

@param boolean $forceRefresh Flag to indicate a force refresh of authentication toekn.
@return void
Gets the refresh token using the authentication URL .