Исключительная ситуация недопустимого состояния Java Lang для выхода из GoogleClientManager в формах Xamarin - PullRequest
0 голосов
/ 07 февраля 2019

Я использую https://www.pujolsluis.com/google-client-plugin-for-xamarin/ для входа в Google в формах xamarin.Оба метода входа и выхода работают нормально;но я должен скрыть страницу входа после успешного входа в систему. После второго запуска приложения, метод выхода из системы выдает java.Lang.IlegalStateException<Timeout exceeded getting exception details>, не может выйти из системы. Активный токен равен null. Как обработать это исключение?Как успешно выйти из системы со второго раза?

Логин:

public IGoogleClientManager googleClientManager;
googleClientManager = CrossGoogleClient.Current;

    private void google_btn_Clicked(object sender, EventArgs e)
    {
        if (CrossConnectivity.Current.IsConnected)
        {
            googleClientManager.LoginAsync();
            googleClientManager.OnLogin += OnLoginCompleted;
            //   CrossGoogleClient.Current.SilentLoginAsync();
            //   var userToken = CrossGoogleClient.Current.ActiveToken;
        }
        else
        {
            DependencyService.Get<IToast>().LongAlert("Check  Connection!");
        }
    }

    public async void OnLoginCompleted(object s,
    GoogleClientResultEventArgs<GoogleUser> loginEventArgs)
    {           
        if (loginEventArgs.Data != null)
        {
            GoogleUser googleUser = loginEventArgs.Data;                 
            string google_name = googleUser.Name;               
            string google_mail = googleUser.Email;        
             Uri google_img = googleUser.Picture;                
            googleClientManager.OnLogin -= OnLoginCompleted;                                    
        }                                       
    }

Выход:

    public void Logout()
    {
        googleClientManager.OnLogout += OnLogoutCompleted;
        googleClientManager.Logout(); // throws exception from secondtime after hiding loginpage
    }

    private void OnLogoutCompleted(object sender, EventArgs loginEventArgs)
    {
        googleClientManager.OnLogout -= OnLogoutCompleted;
    }

1 Ответ

0 голосов
/ 07 февраля 2019

Вы получаете это исключение, потому что вы пытаетесь выйти из клиента Google, который больше не подключен, так как сообщение о состоянии исключения.

Снимок экрана исключения из недопустимого состояния клиента Google

Чтобы решить эту проблему, вы можете сделать две вещи, исправить логику в своем приложении, чтобы сохранить состояние выхода из системы, чтобы вы не пытались выйти из системы, когда пользователь фактически не вошел в систему.Или вы можете включить ActiveToken и добавить оператор if, прежде чем пытаться выйти из системы, чтобы проверить, является ли он пустым или нет, вы можете сделать это, следуя инструкциям руководства по началу работы в репозитории проекта: https://github.com/CrossGeeks/GoogleClientPlugin/blob/master/GoogleClient/docs/GettingStarted.md

Активировать снимок экрана руководства по плагину для клиента ActiveToken

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