예제 #1
0
        /// <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
        }
예제 #2
0
        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);
            }
        }