diff --git a/src/Core/Services/ApiService.cs b/src/Core/Services/ApiService.cs index a58263f96..256135310 100644 --- a/src/Core/Services/ApiService.cs +++ b/src/Core/Services/ApiService.cs @@ -795,8 +795,6 @@ namespace Bit.Core.Services if (authed && ( - (tokenError && response.StatusCode == HttpStatusCode.BadRequest) - || (logoutOnUnauthorized && response.StatusCode == HttpStatusCode.Unauthorized) || response.StatusCode == HttpStatusCode.Forbidden @@ -813,6 +811,17 @@ namespace Bit.Core.Services var responseJsonString = await response.Content.ReadAsStringAsync(); responseJObject = JObject.Parse(responseJsonString); } + + if (authed && tokenError + && + response.StatusCode == HttpStatusCode.BadRequest + && + responseJObject?["error"]?.ToString() == "invalid_grant") + { + await _logoutCallbackAsync(new Tuple(null, false, true)); + return null; + } + return new ErrorResponse(responseJObject, response.StatusCode, tokenError); } catch