protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (this.Client == null) { throw new InvalidOperationException("Make sure to set the 'Client' property in this handler before using it."); } // Cloning the request, in case we need to send it again var clonedRequest = await CloneRequestAsync(request); var response = await base.SendAsync(clonedRequest, cancellationToken); if (response.StatusCode == HttpStatusCode.Unauthorized) { try { AuthStore.DeleteTokenCache(); // cached token was invalid, so should clear it await DoLoginAsync(Settings.Current.AuthenticationType); clonedRequest = await CloneRequestAsync(request); clonedRequest.Headers.Remove("X-ZUMO-AUTH"); clonedRequest.Headers.Add("X-ZUMO-AUTH", Client.CurrentUser.MobileServiceAuthenticationToken); // Resend the request response = await base.SendAsync(clonedRequest, cancellationToken); } catch (InvalidOperationException) { // user cancelled auth, so return the original response return(response); } } return(response); }
public async Task LogoutAsync() { LoginManager.Instance.LogOut(); CookieManager.Instance.RemoveAllCookie(); AuthStore.DeleteTokenCache(); await App.Instance.MobileService.LogoutAsync(); }
public async Task LogoutAsync() { foreach (var cookie in NSHttpCookieStorage.SharedStorage.Cookies) { NSHttpCookieStorage.SharedStorage.DeleteCookie(cookie); } AuthStore.DeleteTokenCache(); await App.Instance.MobileService.LogoutAsync(); }