コード例 #1
0
        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();
                        }
                    }
                }
            }
        }
コード例 #2
0
        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("");
        }