Jake Vanderwerf
2026-01-01 5b5f37de365ff84fc231e414a719d1b2ff4ceff6
inc/integrations/Integrations.php
@@ -761,6 +761,12 @@
      array  $options = []
   ): array|WP_Error
   {
      if (!$this->is_healthy) {
         $this->logDebug('Skipping request - integration is unhealthy', [
            'consecutive_errors' => $this->error_stats['consecutive_errors'],
            'last_success' => $this->error_stats['last_success']
         ]);
      }
      $this->ensureInitialized();
      if (!$this->isSetUp()){
         $this->logError('Connection not setup for '.$this->service_name, [
@@ -1920,7 +1926,6 @@
         return false;
      }
      // Build refresh request data
      $request_data = [
         'client_id' => $this->credentials['client_id'],
         'client_secret' => $this->credentials['client_secret'],
@@ -1928,12 +1933,24 @@
         'grant_type' => 'refresh_token'
      ];
      // Use centralized OAuth request method
      $response = $this->makeOAuthRequest('POST', $this->oauth['token'], $request_data);
      if (is_wp_error($response)) {
         $error_message = $response->get_error_message();
         if (str_contains($error_message, 'invalid_grant')) {
            $this->logError('OAuth refresh token is invalid - user must re-authorize', [
               'error' => $error_message
            ], 'critical');
            // Mark unhealthy immediately
            $this->error_stats['consecutive_errors'] = $this->error_threshold;
            $this->is_healthy = false;
            $this->saveErrorStats();
         }
         $this->logError('Failed to refresh OAuth token for '.$this->service_name, [
            'error' => $response->get_error_message()
            'error' => $error_message
         ]);
         return false;
      }