示例#1
0
        /// <summary>
        /// Аутентификация по полученному токену
        /// </summary>
        /// <returns></returns>
        public OAuthLoginResponse Login()
        {
            OAuthLoginResponse loginResponse = new OAuthLoginResponse();
            string             providerName  = HttpContext.Current.Request.Params["providerName"];
            OAuthProviderBase  oAuthProvider = Providers.FirstOrDefault(provider => string.Equals(provider.ProviderName, providerName));

            if (oAuthProvider == null)
            {
                loginResponse.Success = false;
            }
            else
            {
                NameValueCollection response = oAuthProvider.SendTokenRequest();
                string token = response["access_token"];
                if (string.IsNullOrEmpty(token))
                {
                    loginResponse.Success = false;
                }
                else
                {
                    DateTime       tokenExpires   = GetTokenExpires(response);
                    CookieUserData cookieUserData = oAuthProvider.GetUserData(token, out loginResponse.Account);
                    User           user           = FindOrCreateUser(cookieUserData, out loginResponse.IsNewUser);
                    cookieUserData.UserId = user.Id;
                    CookieDataProvider.Login(user.Name, cookieUserData, tokenExpires);
                    loginResponse.Success = true;
                }
            }

            return(loginResponse);
        }
示例#2
0
        public void OnUserInformationReceived(OAuthLoginResponse loginResponse)
        {
            if (loginResponse.LoginID != authentificationToken)
            {
                return;
            }


            if (loginResponse.IsLoggedIn)
            {
                IsLoading = false;
                AppContextSingleton.Instance.AppContext.CurrentConnectedUser = loginResponse.User;
                GoToHome();
            }
            else
            {
                App.Current.Dispatcher.BeginInvoke((Action) delegate

                {
                    var registerView = new RegisterView();
                    var dataContext  = registerView.DataContext as RegisterViewModel;

                    if (dataContext != null)
                    {
                        dataContext.RegisterRequestModel.FirstName     = loginResponse.User.FirstName;
                        dataContext.RegisterRequestModel.LastName      = loginResponse.User.LastName;
                        dataContext.RegisterRequestModel.Email         = loginResponse.User.Email;
                        dataContext.RegisterRequestModel.ProfileImgUrl = loginResponse.User.ProfileImgURL;

                        MainTransitions.TransitionPageControl.ShowPage(registerView);
                    }
                });
            }
        }
示例#3
0
        /// <summary>
        /// Вход в систему по OAuth-аутентификации
        /// </summary>
        /// <param name="newUser"></param>
        /// <returns></returns>
        public bool OAuthLogin(out bool newUser)
        {
            OAuthLoginResponse response = _oAuthService.Login();

            if (response.Success && response.IsNewUser)
            {
                _accountLogic.SaveAccount(response.Account);
            }
            newUser = response.IsNewUser;
            return(response.Success);
        }