public Steam(Action <bool> OnLogOn, Action <EPurchaseResultDetail, string> OnKeyRedeem) { this.onLogOn = OnLogOn; this.onKeyRedeem = OnKeyRedeem; if (File.Exists("auth.json")) { Program.Context.Log("Using saved auth details."); logOnDetails = JsonConvert.DeserializeObject <SteamUser.LogOnDetails>(File.ReadAllText("auth.json")); } if (logOnDetails.Username != null && (logOnDetails.Password != null || logOnDetails.LoginKey != null)) { EResult logInResult = AttemptLogIn(); if (logInResult == EResult.OK) { loggedOn = true; OnLogOn(true); return; } else { Console.WriteLine(logInResult); } } previousResult = EResult.OK; askForm = new GetLogonDetails(HandleFormResponse); askForm.Show(); }
private void HandleFormResponse(string accountName, string accountPassword, string steamGuardCode, bool userClosed) { if (userClosed) { onLogOn(false); return; } logOnDetails.Username = accountName; logOnDetails.Password = accountPassword; logOnDetails.ShouldRememberPassword = true; if (previousResult == EResult.AccountLogonDenied) { logOnDetails.AuthCode = steamGuardCode; } else if (previousResult == EResult.AccountLoginDeniedNeedTwoFactor) { logOnDetails.TwoFactorCode = steamGuardCode; } EResult res = AttemptLogIn(); if (res == EResult.OK) { askForm.Dispose(); askForm = null; logOnDetails.TwoFactorCode = null; logOnDetails.AuthCode = null; File.WriteAllText("auth.json", JsonConvert.SerializeObject(logOnDetails)); loggedOn = true; onLogOn(true); return; } logOnDetails.LoginKey = null; logOnDetails.SentryFileHash = null; if (res == EResult.AccountLoginDeniedNeedTwoFactor || res == EResult.TwoFactorCodeMismatch) { askForm.Update(true, true, "Please enter your two-factor code below."); return; } else if (res == EResult.AccountLogonDenied) { askForm.Update(true, true, "Please enter your email code below."); } else { askForm.Update(true, false, "Error logging in: " + res); } }