/// <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); }
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); } }); } }
/// <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); }