У меня есть приложение Xamarin, которое общается с API. Существует определенный сценарий, который происходит при обращении к API, в котором возвращается исключение 401 (неавторизованное). Этот 401 (неавторизованный) возвращается преднамеренно, когда учетная запись пользователя становится неактивной, поэтому, даже если токен пользователя все еще действует в приложении, они не смогут получить какие-либо данные из API.
Я хочу, чтобы пользователь мог выходить из приложения, только когда выдается исключение 401 (неавторизовано).
Мой вызов API выглядит следующим образом:
public async Task<T> GetAsync<T>(string url)
{
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _authToken?.AccessToken ?? this.GetToken().AccessToken);
var json = await _client.GetStringAsync(url);
return json.Deserialize<T>();
}
Когда отладчик достигает строки var json = await _client.GetStringAsync(url);
, правильно генерируется исключение 401 (неавторизовано).
Я хочу иметь возможность обработать это исключение 401 (неавторизовано) и выйти из приложения (желательно с предупреждением об этом).
В настоящее время я отлаживаю на устройстве Android, поэтому я попытался добавить следующий код в класс MainActivity
.
protected override async void OnCreate(Bundle bundle)
{
AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironmentOnUnhandledException;
}
private void AndroidEnvironmentOnUnhandledException(object sender, RaiseThrowableEventArgs e)
{
if(e.Exception.InnerException.GetBaseException().Message == "401 (Unauthorized)")
{
}
}
Когда выдается ошибка, я проверяю, является ли она 401 (неавторизованной). Именно здесь я думал, что тогда выйду из приложения, но не думаю, что это правильное направление.
Есть ли лучшая практика для передачи сценария такого типа, о которой я еще не знаю?