public LoginResult GetAccessToken(bool sisi, out Token accessToken) { Token checkToken = sisi ? SisiToken : TranquilityToken; if (checkToken != null && !checkToken.IsExpired) { accessToken = checkToken; return(LoginResult.Success); } // need SecurePassword. if (SecurePassword == null || SecurePassword.Length == 0) { DecryptPassword(true); if (SecurePassword == null || SecurePassword.Length == 0) { Windows.EVELogin el = new Windows.EVELogin(this, true); bool? dialogResult = el.ShowDialog(); if (SecurePassword == null || SecurePassword.Length == 0) { // password is required, sorry dude accessToken = null; return(LoginResult.InvalidUsernameOrPassword); } App.Settings.Store(); } } var uri = RequestResponse.GetLoginUri(sisi, state.ToString(), challengeHash); string RequestVerificationToken = string.Empty; var result = GetRequestVerificationToken(uri, sisi, out RequestVerificationToken); var req = RequestResponse.CreatePostRequest(uri, sisi, true, "URL", Cookies); using (SecureBytesWrapper body = new SecureBytesWrapper()) { byte[] body1 = Encoding.ASCII.GetBytes(String.Format("__RequestVerificationToken={1}&UserName={0}&Password="******"UserName={0}&Password=", Uri.EscapeDataString(Username))); using (SecureStringWrapper ssw = new SecureStringWrapper(SecurePassword, Encoding.ASCII)) { using (SecureBytesWrapper escapedPassword = new SecureBytesWrapper()) { escapedPassword.Bytes = System.Web.HttpUtility.UrlEncodeToBytes(ssw.ToByteArray()); body.Bytes = new byte[body1.Length + escapedPassword.Bytes.Length]; System.Buffer.BlockCopy(body1, 0, body.Bytes, 0, body1.Length); System.Buffer.BlockCopy(escapedPassword.Bytes, 0, body.Bytes, body1.Length, escapedPassword.Bytes.Length); req.SetBody(body); } } } return(GetAccessToken(sisi, req, out accessToken)); }
public LoginResult GetRefreshToken(bool sisi, out string refreshToken) { string checkToken = sisi ? SisiRefreshToken : TranquilityRefreshToken; if (!string.IsNullOrEmpty(checkToken)) { refreshToken = checkToken; return(LoginResult.Success); } // need PlaintextPassword. if (SecurePassword == null || SecurePassword.Length == 0) { Windows.EVELogin el = new Windows.EVELogin(this, false); bool? result = el.ShowDialog(); if (SecurePassword == null || SecurePassword.Length == 0) { // password is required, sorry dude refreshToken = null; return(LoginResult.InvalidUsernameOrPassword); } } string uri = "https://login.eveonline.com/Account/LogOn?ReturnUrl=%2Foauth%2Fauthorize%2F%3Fclient_id%3DeveLauncherTQ%26lang%3Den%26response_type%3Dcode%26redirect_uri%3Dhttps%3A%2F%2Flogin.eveonline.com%2Flauncher%3Fclient_id%3DeveLauncherTQ%26scope%3DeveClientToken%2520user"; if (sisi) { uri = "https://sisilogin.testeveonline.com/Account/LogOn?ReturnUrl=%2Foauth%2Fauthorize%2F%3Fclient_id%3DeveLauncherTQ%26lang%3Den%26response_type%3Dcode%26redirect_uri%3Dhttps%3A%2F%2Fsisilogin.testeveonline.com%2Flauncher%3Fclient_id%3DeveLauncherTQ%26scope%3DeveClientToken%2520user"; } HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri); req.Timeout = 5000; req.AllowAutoRedirect = true; if (!sisi) { req.Headers.Add("Origin", "https://login.eveonline.com"); } else { req.Headers.Add("Origin", "https://sisilogin.testeveonline.com"); } req.Referer = uri; req.CookieContainer = Cookies; req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; using (SecureBytesWrapper body = new SecureBytesWrapper()) { byte[] body1 = Encoding.ASCII.GetBytes(String.Format("UserName={0}&Password="******"Invalid username / password")) { refreshToken = null; return(LoginResult.InvalidUsernameOrPassword); } /* * <span id="ValidationContainer"><div class="validation-summary-errors"><span>Login failed. Possible reasons can be:</span> * <ul><li>Invalid username / password</li> * </ul></div></span> */ // https://login.eveonline.com/launcher?client_id=eveLauncherTQ#access_token=l4nGki1CTUI7pCQZoIdnARcCLqL6ZGJM1X1tPf1bGKSJxEwP8lk_shS19w3sjLzyCbecYAn05y-Vbs-Jm1d1cw2&token_type=Bearer&expires_in=43200 //accessToken = new Token(resp.ResponseUri); refreshCode = HttpUtility.ParseQueryString(resp.ResponseUri.Query).Get("code"); // String expires_in = HttpUtility.ParseQueryString(fromUri.Fragment).Get("expires_in"); } GetTokensFromCode(sisi, refreshCode); throw new NotImplementedException(); if (!sisi) { TranquilityRefreshToken = refreshToken; } else { SisiRefreshToken = refreshToken; } return(LoginResult.Success); }