public async Task ExecuteAsync(CancellationToken cancellationToken) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); if (_context != null) { SecurityToken token = _context.SecurityTokens.Where(t => t.service == Data.Enums.Stream.TokenType.Twitch).FirstOrDefault(); if (token != null && token.RefreshToken != null && token.RefreshToken != "") { var httpclient = new HttpClient(); string baseUrl = _configuration.GetValue <string>("WebServerWebAddress"); string url = $"https://id.twitch.tv/oauth2/token?grant_type=refresh_token&refresh_token={token.RefreshToken}&client_id={token.ClientID}&client_secret={token.secret}"; var response = await httpclient.PostAsync(url, new StringContent("", System.Text.Encoding.UTF8, "text/plain")); var responsestring = await response.Content.ReadAsStringAsync(); JSONObjects.TwitchRefreshTokenData refresh = JsonConvert.DeserializeObject <JSONObjects.TwitchRefreshTokenData>(responsestring); if (refresh.error == null) { token.token = refresh.access_token; token.RefreshToken = refresh.refresh_token; _context.SaveChanges(); } } } } }
private async Task <string> RefreshToken(string streamname) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); Stream stream = _context.StreamModels.Where(sm => sm.StreamName.ToLower().Equals(streamname) && sm.Type == StreamProviderTypes.Twitch).FirstOrDefault(); if (stream != null && stream.RefreshToken != null && stream.RefreshToken != "") { var httpclient = new HttpClient(); string baseUrl = _configuration.GetValue <string>("WebServerWebAddress"); string url = $"https://id.twitch.tv/oauth2/token?grant_type=refresh_token&refresh_token={stream.RefreshToken}&client_id={stream.ClientID}&client_secret={stream.Secret}"; var response = await httpclient.PostAsync(url, new StringContent("", System.Text.Encoding.UTF8, "text/plain")); var responsestring = await response.Content.ReadAsStringAsync(); JSONObjects.TwitchRefreshTokenData refresh = JsonConvert.DeserializeObject <JSONObjects.TwitchRefreshTokenData>(responsestring); if (refresh.error == null) { stream.AccessToken = refresh.access_token; stream.RefreshToken = refresh.refresh_token; _context.SaveChanges(); return(refresh.access_token); } } } return(""); }