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