diff --git a/src/dotnet/QuantEngine.Infrastructure/Services/KisApiClient.cs b/src/dotnet/QuantEngine.Infrastructure/Services/KisApiClient.cs index 2873c69..678b356 100644 --- a/src/dotnet/QuantEngine.Infrastructure/Services/KisApiClient.cs +++ b/src/dotnet/QuantEngine.Infrastructure/Services/KisApiClient.cs @@ -174,8 +174,15 @@ public class KisApiClient : IKisApiClient response.EnsureSuccessStatusCode(); var tokenData = await response.Content.ReadFromJsonAsync>(); - var accessToken = tokenData["access_token"]?.ToString() ?? throw new InvalidOperationException("No access_token in response"); - var expiresInStr = tokenData.ContainsKey("expires_in") ? tokenData["expires_in"]?.ToString() : "86400"; + if (tokenData == null) throw new InvalidOperationException("Token response body is empty"); + + if (!tokenData.TryGetValue("access_token", out var tokenObj) || tokenObj == null) + throw new InvalidOperationException("No access_token in response"); + var accessToken = tokenObj.ToString()!; + + var expiresInStr = tokenData.TryGetValue("expires_in", out var expiresObj) && expiresObj != null + ? expiresObj.ToString() + : "86400"; var expiresInSec = int.TryParse(expiresInStr, out var seconds) ? seconds : 86400; var expiresAt = DateTime.UtcNow.AddSeconds(expiresInSec);