Как выйти из Microsoft в формах xamarin? - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над формами ксамарина. Если для входа в систему используется Microsoft, используя AuthenticationContext . Как только я нажму на кнопку входа, он будет перенаправлен на страницу входа Microsoft. Логин работает правильно. Как только я вошел в систему от пользователя при нажатии кнопки «Выйти», пользователь должен выйти из системы, как выйти из системы без нажатия кнопки?

используя следующий код, я могу войти

public Task<AuthenticationResult> Authenticate(string authority, string resource, string clientId, string returnUri)
    {
        try
        {
            var authContext = new AuthenticationContext(authority);
            if (authContext.TokenCache.ReadItems().Any())
            {
                authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
            }


            var uri = new Uri(returnUri);
            var platformParams = new PlatformParameters((Activity)Forms.Context);
            var authResult = authContext.AcquireTokenAsync(resource, clientId, uri, platformParams);
            return authResult;
        }
        catch (Exception ex)
        {
            Crashes.TrackError(ex);
            return null;
        }
    }

Пожалуйста, помогите мне, как выйти?

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

Очистка токена доступа для выхода из системы

Public static void Logout()
{
  AuthenticationContext authContext = new 
  AuthenticationContext(AuthenticationConstants.Authority);
  TokenCache tokenCache = ac.TokenCache;
  tokenCache.Clear();
}

вызовите этот метод, прежде чем вернуться на страницу входа. Я имею в виду, прежде чем вернуться обратно на страницу входа, необходимо очистить токен доступа

Like example
private void NavigateToLoginViewController()
{ 
    // call the above logout method here 
   .
   .
   .
}
2 голосов
/ 19 июня 2019

Вы Logout, очистив Tokencache, а затем выйдите из приложения или установите для главной страницы приложения значение Страница входа.

Для iOS:

public async Task LogoutAsync()
        {
            var authContext = new AuthenticationContext(authority);
            if (authContext.TokenCache.ReadItems().Any())
            {
                authContext.TokenCache.Clear();
            }

            //In addition to clearing the token cache, you should also clear the cookies in the web view.
            //Otherwise, the session cookies come into play and that is why you are seeing the web view come up and disappear immediately.
            foreach (var cookie in NSHttpCookieStorage.SharedStorage.Cookies)
            {
                NSHttpCookieStorage.SharedStorage.DeleteCookie(cookie);
            }
        }

То же самое для Android, простометод разницы для очистки куки:

        CookieManager.Instance.RemoveAllCookie();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...