/**
  * Get a new access token.
  *
  * @return AccessToken|null
  */
 protected function acquireAccessToken()
 {
     $accessToken = null;
     if ($this->refreshTokenGrantType) {
         // Get an access token using the stored refresh token.
         if ($this->refreshToken) {
             $this->refreshTokenGrantType->setRefreshToken($this->refreshToken->getToken());
         }
         if ($this->refreshTokenGrantType->hasRefreshToken()) {
             $accessToken = $this->refreshTokenGrantType->getToken();
         }
     }
     if (!$accessToken && $this->grantType) {
         // Get a new access token.
         $accessToken = $this->grantType->getToken();
     }
     return $accessToken ?: null;
 }
 /**
  * Get a new access token.
  *
  * @return AccessToken|null
  */
 protected function acquireAccessToken()
 {
     $accessToken = null;
     if ($this->refreshTokenGrantType) {
         if ($this->refreshTokenGrantType->hasRefreshToken()) {
             $accessToken = $this->getToken($this->refreshTokenGrantType);
         }
     }
     if (!$accessToken && $this->grantType) {
         // Get a new access token.
         $accessToken = $this->getToken($this->grantType);
     }
     return $accessToken ?: null;
 }
 /**
  * Set the refresh token.
  *
  * @param AccessToken|string $refreshToken The refresh token
  *
  * @return self
  */
 public function setRefreshToken($refreshToken)
 {
     if (!$this->accessToken instanceof AccessToken) {
         throw new \InvalidArgumentException('Unable to update the refresh token. You have never set first the access token.');
     }
     if (is_string($refreshToken)) {
         $refreshToken = new AccessToken($refreshToken, 'refresh_token');
     } elseif (!$refreshToken instanceof AccessToken) {
         throw new \InvalidArgumentException('Invalid refresh token');
     }
     $this->accessToken->setRefreshToken($refreshToken);
     if ($this->refreshTokenGrantType instanceof RefreshTokenGrantTypeInterface) {
         $this->refreshTokenGrantType->setRefreshToken($refreshToken->getToken());
     }
     return $this;
 }