public async Task RefreshTokens(bool force = false) { var settings = GetSettings(); if (settings.ExpiresAt < DateTime.UtcNow || force) { Write("Refreshing Windows Live Access Token... "); var windowsLiveRefresh = await Authentication.RefreshWindowsLiveAuthenicationAsync(settings.RefreshToken); WriteLine("Done"); Write("Updating Authentication with Xbox Live... "); var xboxLiveAuthentication = await Authentication.AuthenticateXboxLiveAsync(windowsLiveRefresh.AccessToken); WriteLine("Done"); Write("Updating Authorization with Xbox Live... "); var xboxLiveAuthorization = await Authentication.AuthorizeXboxLiveAsync(xboxLiveAuthentication.Token); WriteLine("Done"); settings.AccessToken = windowsLiveRefresh.AccessToken; settings.AgeGate = xboxLiveAuthorization.DisplayClaims.Xui[0].AgeGate; settings.ExpiresAt = DateTime.UtcNow.AddSeconds(windowsLiveRefresh.ExpiresIn - 20); settings.Gamertag = xboxLiveAuthorization.DisplayClaims.Xui[0].Gamertag; settings.RefreshToken = windowsLiveRefresh.RefreshToken; settings.Token = xboxLiveAuthorization.Token; settings.UserHeaderSession = xboxLiveAuthorization.DisplayClaims.Xui[0].UserHeaderSession; settings.XboxUserId = xboxLiveAuthorization.DisplayClaims.Xui[0].XboxUserId; SetSettings(settings); } }
public async Task Login(string windowsLiveAuthServer) { // get identity Write("Microsoft Account Email Address: "); var identity = ReadLine(); // get password Write("Microsoft Account Password: "******"*"); } else { if (key.Key == ConsoleKey.Backspace && identityPassword.Length > 0) { identityPassword = identityPassword.Substring(0, (identityPassword.Length - 1)); Write("\b \b"); } } }while (key.Key != ConsoleKey.Enter); WriteLine(); // get two fac Write("Microsoft Account Two Factor Code (Optional): "); var identityTwoFactorCode = ReadLine(); Write("Authenticating with Windows Live... "); var windowsLiveAuthentication = await Authentication.AuthenticateWindowsLiveAsync(windowsLiveAuthServer, identity, identityPassword, identityTwoFactorCode); WriteLine("Done"); Write("Authenticating with Xbox Live... "); var xboxLiveAuthentication = await Authentication.AuthenticateXboxLiveAsync(windowsLiveAuthentication.AccessToken); WriteLine("Done"); Write("Authorizing with Xbox Live... "); var xboxLiveAuthorization = await Authentication.AuthorizeXboxLiveAsync(xboxLiveAuthentication.Token); WriteLine("Done"); var settings = GetSettings(); settings.AccessToken = windowsLiveAuthentication.AccessToken; settings.RefreshToken = windowsLiveAuthentication.RefreshToken; settings.ExpiresAt = DateTime.UtcNow.AddSeconds(windowsLiveAuthentication.ExpiresIn - 40); settings.XboxUserId = xboxLiveAuthorization.DisplayClaims.Xui[0].XboxUserId; settings.Token = xboxLiveAuthorization.Token; settings.AgeGate = xboxLiveAuthorization.DisplayClaims.Xui[0].AgeGate; settings.Gamertag = xboxLiveAuthorization.DisplayClaims.Xui[0].Gamertag; settings.UserHeaderSession = xboxLiveAuthorization.DisplayClaims.Xui[0].UserHeaderSession; SetSettings(settings); WriteLine(); WriteLine(" --- "); WriteLine(); WriteLine("Signed in as {0} ({1}) - {2} account.", settings.Gamertag, settings.XboxUserId, settings.AgeGate); }