public string AddUser(OAuthUserDetails userDetails, string code) { dynamic db = GetDatabase(); var salt = BCryptHelper.GenerateSalt(); var password = PasswordUtil.GeneratePassword(); var hashedPassword = PasswordUtil.HashPassword(password, salt); var user = db.Users.FindByEmail(userDetails.email); if (user == null) { db.Users.Insert(new User { Email = userDetails.email, Name = userDetails.name, AppsCode = code, Salt = salt, Password = hashedPassword }); } else { user.Salt = salt; user.Password = hashedPassword; db.Users.Update(user); } return password; }
async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e) { var authenticator = sender as OAuth2Authenticator; if (authenticator != null) { authenticator.Completed -= OnAuthCompleted; authenticator.Error -= OnAuthError; } if (e.IsAuthenticated) { OAuthUserDetails user = null; // If the user is authenticated, request their basic user data from Google // UserInfoUrl = https://www.googleapis.com/oauth2/v2/userinfo var request = new OAuth2Request("GET", new Uri(OAuthConstants.GoogleUserInfoUrl), null, e.Account); var response = await request.GetResponseAsync(); if (response != null) { // Deserialize the data and store it in the account store // The users email address will be used to identify data in SimpleDB string userJson = await response.GetResponseTextAsync(); user = JsonConvert.DeserializeObject <OAuthUserDetails>(userJson); } LFLens.Helpers.Settings.AccessToken = null; LFLens.Helpers.Settings.RefreshToken = null; LFLens.Helpers.Settings.AccessTokenExpirationDate = DateTime.UtcNow; await store.SaveAsync(account = e.Account, OAuthConstants.AppName); if (account != null) { LFLens.Helpers.Settings.Username = user.Name; LFLens.Helpers.Settings.EmailID = user.Email; LFLens.Helpers.Settings.UserProfileURL = user.Picture; LFLens.Helpers.Settings.AccessToken = account.Properties["access_token"].ToString(); LFLens.Helpers.Settings.RefreshToken = account.Properties["refresh_token"].ToString(); LFLens.Helpers.Settings.AccessTokenExpirationDate = DateTime.UtcNow.AddSeconds(Convert.ToDouble(account.Properties["expires_in"].ToString())); Application.Current.MainPage = new MainPage(); // } } }