private static void RefreshTokenIfNeeded() { _messageLogConsole.Write("Token expires in " + TimeSpan.FromTicks(_accessToken.Expiry.Ticks - DateTime.UtcNow.Ticks) + " ticks", true); // Check for expiration within the next 2 minutes if (DateTime.Compare(DateTime.UtcNow.AddMinutes(2), _accessToken.Expiry.ToUniversalTime()) > 0) { if (_accessToken.RefreshToken.Expiry.ToUniversalTime() > DateTime.UtcNow) { _messageLogConsole.Write("Requesting access token refresh using the refresh token.", true); GetAccessTokenResult getAccessTokenResult = _client.GetAccessToken(_accessToken.RefreshToken); if (getAccessTokenResult.Success) { _accessToken = getAccessTokenResult.Token; } else { CreateErrorWindow(getAccessTokenResult.Error, _mainConsole); } } else { _messageLogConsole.Write("We need a new access token but the refresh token is expired.", true); } } }
/// <summary> /// Attempt to log in to the game server (could be lan or other) /// </summary> /// <param name="username">An account name</param> /// <param name="password">A password which should be transmitted using TLS. The server will receive the password and calculate its hash.</param> /// <returns>TRUE if authentication is successful.</returns> public static bool DoLogin(string username, string password) { _gameStatus = GameStatus.LoggingIn; GetAccessTokenResult result = _client.GetAccessToken(username, password); if (!result.Success) { _gameStatus = GameStatus.Startup; CreateErrorWindow(result.Error, _loginWindow.Children.First()); return(false); } else { _accessToken = result.Token; _messageLogConsole = new MessageLogConsole(_mainConsole.Width, _mainConsole.Height / 4); _messageLogConsole.Position = new Point(0, 0); _messageLogConsole.IsVisible = true; _mainConsole.Children.Add(_messageLogConsole); _gameStatus = GameStatus.LoggedIn; _loginWindow.IsVisible = false; _loginWindow.Controls.RemoveAll(); _loginWindow.Clear(); StartHeartbeat(TimeSpan.FromSeconds(10), CancelHeartbeat); return(true); } }
public GetAccessTokenResult GetAccessToken(RefreshToken refreshToken) { var output = new GetAccessTokenResult(); var dto = new RefreshTokenContainer(); dto.Content = refreshToken.Content; var result = _endpoint .AllowAnyHttpStatus() .WithHeader("Accept-Version", "1.0") .AppendPathSegment("api") .AppendPathSegment("Rpc") .AppendPathSegment("GetTokenUsingRefreshToken") .PostJsonAsync(dto).Result; if (result.IsSuccessStatusCode) { output.Success = true; output.Token = Newtonsoft.Json.JsonConvert.DeserializeObject <AccessToken>(result.Content.ReadAsStringAsync().Result); output.Error = null; } else { output.Success = false; output.Error = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorFromServer>(result.Content.ReadAsStringAsync().Result); output.Token = null; } return(output); }
public GetAccessTokenResult GetAccessToken(string username, string password) { var output = new GetAccessTokenResult(); LoginInformation loginInformation = new LoginInformation(username, password); var result = _endpoint .AllowAnyHttpStatus() .WithHeader("Accept-Version", "1.0") .AppendPathSegment("api") .AppendPathSegment("Rpc") .AppendPathSegment("GetToken") .PostJsonAsync(loginInformation).Result; if (result.IsSuccessStatusCode) { output.Success = true; output.Token = Newtonsoft.Json.JsonConvert.DeserializeObject <AccessToken>(result.Content.ReadAsStringAsync().Result); output.Error = null; } else { output.Success = false; string content = result.Content.ReadAsStringAsync().Result; output.Error = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorFromServer>(content); output.Token = null; } return(output); }
private void DoTokenRequest(string postData) { string requestUrl = m_configuration.ApiBaseUrl + "/oauth2/token"; GetAccessTokenResult result = m_apiInvoker.InvokeApi( requestUrl, "POST", postData, null, null, "application/x-www-form-urlencoded"); m_accessToken = result.AccessToken; m_refreshToken = result.RefreshToken; }
public async Task GetAccessTokenWithRefreshToken(RefreshToken refreshToken) { var accessToken = _authService.CreateAccessTokenFromRefreshToken(refreshToken.Content); if (accessToken != null) { var result = new GetAccessTokenResult(); result.Error = null; result.Success = true; result.Token = accessToken; await Clients.Caller.ReceiveAccessTokenFromRefreshToken(result); } }
public async Task GetAccessToken(CredentialsContainer ctr) { if (_authService.TryLoginCredentials(ctr.Username, ctr.Password)) { AccessToken token = _authService.CreateGameplayToken(ctr.Username); var result = new GetAccessTokenResult(); result.Error = null; result.Success = true; result.Token = token; await Clients.Caller.ReceiveAccessTokenResult(result); } else { var result = new GetAccessTokenResult(); result.Error = new ErrorFromServer("Could not verify credentials."); result.Success = false; result.Token = null; await Clients.Caller.ReceiveAccessTokenResult(result); } }
public void XmlSerializeTest() { var ixml = ToolFactory.CreateIXmlSerializeTool(); var r = new GetAccessTokenResult() { access_token = "j;alskdjf;asldkfj", expires_in = 7200 }; CacheDto s = new CacheDto() { Value = r, Key = "lkjl", Expire = DateTime.Now.AddDays(2) }; List <CacheDto> l = new List <CacheDto>() { s }; ixml.SerializeToFile(l, "D:\\d.xml"); ixml.DeserializeFromFile <List <CacheDto> >("D:\\d.xml"); }
private void RequestToken() { string postData = "grant_type=client_credentials&client_id=" + m_configuration.AppSid + "&client_secret=" + m_configuration.AppKey; string requestUrl = m_configuration.AuthBaseUrl + "/connect/token"; try { GetAccessTokenResult result = (GetAccessTokenResult)m_apiInvoker.InvokeApi( requestUrl, "POST", postData, null, null, "application/x-www-form-urlencoded", typeof(GetAccessTokenResult)); m_configuration.AuthToken = result.AccessToken; } catch (ApiException ex) { if (ex.ErrorCode == 400) { throw new ApiException(401, ex.Message); } throw; } }