public static async Task RunRefreshAsync(TokenResponse response, int milliseconds) { var refresh_token = response.RefreshToken; while (true) { response = await RefreshTokenAsync(refresh_token); // Get the resource data using the new tokens... await ResourceDataClient.GetDataAndDisplayInConsoleAsync(response.AccessToken); if (response.RefreshToken != refresh_token) { ShowResponse(response); refresh_token = response.RefreshToken; } Task.Delay(milliseconds).Wait(); } }
static async Task MainAsync() { Log.Logger = new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("App", "ConsoleResourceOwnerFlowRefreshToken") .Enrich.FromLogContext() .WriteTo.ColoredConsole() .WriteTo.File("../Log/ConsoleResourceOwnerFlowRefreshToken") .CreateLogger(); var response = IdentityServer4Client.LoginAsync("damienbod", "damienbod").Result; Log.Logger.Information("GOT TOKENS FROM IDENTITYSERVER4: {AccessToken}", response.AccessToken); // GET DATA from the resource server await ResourceDataClient.GetDataAndDisplayInConsoleAsync(response.AccessToken); Log.Logger.Information("GOT DATA FROM THE RESOURCE SERVER"); // Run an loop which gets refreshes the token every 6000 milliseconds await IdentityServer4Client.RunRefreshAsync(response, 6000); }