/// <summary> /// Выполнить авторизацию ВКонтакте. /// </summary> /// <param name="response">Данные авторизации после валидации.</param> /// <exception cref="ArgumentNullException"></exception> public void CompleteLogIn(VKLoginResponse response) { if (response == null) { throw new ArgumentNullException("response", "Переменная должна быть инициализирована."); } if (response.ErrorName == AppConstants.ValidationCanceled) { #if ONEVK_CORE Messenger.Default.Send(new LoginMessage() { State = VKLoginStates.ValidationCanceled }); #endif return; } #if ONEVK_CORE ServiceLocator.Current.GetInstance <SettingsService>().AccessToken = response.GetAccessToken; //Messenger.Default.Send<LoginMessage>(new LoginMessage() { State = VKLoginStates.Login }); ServiceHelper.VKLongPollService.StartLongPolling(); ServiceLocator.Current.GetInstance <IAppMessagesService>().StartAndRestore(); ServiceLocator.Current.GetInstance <IPromoService>().Update(); #endif }
private void browser_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) { _isLoading = true; _isCompleted = false; LoginCommand.RaiseCanExecuteChanged(); VisualStateManager.GoToState(this, "Loading", true); if (args.Uri.AbsoluteUri.Contains("token=")) { _isCompleted = true; var parts = args.Uri.Fragment.Substring(1).Split('&').ToArray(); string token = parts[0].Split('=')[1]; ulong userID = ulong.Parse(parts[2].Split('=')[1]); var accessToken = new VKAccessToken { AccessToken = token, UserID = (long)userID }; var response = new VKLoginResponse(token, userID); ServiceHelper.VKLoginService.CompleteLogIn(response); if (!((LoginViewModel)DataContext).LoginToken(accessToken)) { VisualStateManager.GoToState(this, "Normal", true); return; } //Messenger.Default.Send(new LoginMessage { State = VKLoginStates.Login }); } else if (args.Uri.AbsoluteUri.Contains("error=")) { var parts = args.Uri.Fragment.Substring(1).Split('&').ToArray(); string error = parts[0].Split('=')[1]; if (error == "access_denied") { ServiceHelper.DialogService.ShowMessage( "Не удалось выполнить авторизацию. Возможно, вы ее отменили.", "Ошибка авторизации"); } _isCompleted = true; VisualStateManager.GoToState(this, "Normal", true); } }