diff --git a/MareSynchronos/WebAPI/SignalR/TokenProvider.cs b/MareSynchronos/WebAPI/SignalR/TokenProvider.cs index c3341db..c1c688b 100644 --- a/MareSynchronos/WebAPI/SignalR/TokenProvider.cs +++ b/MareSynchronos/WebAPI/SignalR/TokenProvider.cs @@ -76,6 +76,24 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber new KeyValuePair("charaIdent", await _dalamudUtil.GetPlayerNameHashedAsync().ConfigureAwait(false)), }), token).ConfigureAwait(false); + if (!result.IsSuccessStatusCode) + { + tokenUri = MareAuth.AuthFullPath(new Uri(_serverManager.CurrentApiUrl + .Replace("wss://", "https://", StringComparison.OrdinalIgnoreCase) + .Replace("ws://", "http://", StringComparison.OrdinalIgnoreCase))); + result = await _httpClient.PostAsync(tokenUri, new FormUrlEncodedContent(new[] + { + new KeyValuePair("auth", auth), + new KeyValuePair("charaIdent", await _dalamudUtil.GetPlayerNameHashedAsync().ConfigureAwait(false)), + }), token).ConfigureAwait(false); + + var textResponse = await result.Content.ReadAsStringAsync().ConfigureAwait(false) ?? string.Empty; + result.EnsureSuccessStatusCode(); + _tokenCache[identifier] = textResponse; + _wellKnownCache[_serverManager.CurrentApiUrl] = null; + return textResponse; + } + var response = await result.Content.ReadFromJsonAsync().ConfigureAwait(false) ?? new(); result.EnsureSuccessStatusCode(); _tokenCache[identifier] = response.Token;