Ejemplo n.º 1
0
        public async Task <IReadOnlyCollection <Token> > GetTokensAsync(CancellationToken cancellationToken = default)
        {
            var refreshToken = await _tokenStore.GetTokenAsync(TokenType.RefreshToken).ConfigureAwait(false);

            if (refreshToken == null)
            {
                return(new List <Token>());
            }

            _logger.LogDebug("Refreshing token");

            var refreshTokenResponse = await _tokenClient.GetRefreshTokenAsync(refreshToken.Value, cancellationToken)
                                       .ConfigureAwait(false);

            //todo: handle errors
            if (refreshTokenResponse.IsError)
            {
                _logger.LogError(refreshTokenResponse.Exception, "Error refreshing token. {Message}",
                                 refreshTokenResponse.ErrorDescription);

                return(new List <Token>());
            }

            var accessToken = Helpers.CreateAccessToken(refreshTokenResponse);

            _logger.LogDebug("Tokens refreshed successfully.");

            return(new List <Token>
            {
                accessToken,
                refreshToken
            });
        }
Ejemplo n.º 2
0
        public async Task <TwitchAccessToken> AcquireTokenAsync()
        {
            var currentToken = await _tokenStore.GetTokenAsync();

            if (currentToken?.HasTokenExpired() == false)
            {
                return(currentToken);
            }

            return(await RefreshTokenAsync());
        }
Ejemplo n.º 3
0
        public virtual async Task <string> GetAccessTokenAsync()
        {
            var token = await _tokenStore.GetTokenAsync();

            if (token.HasExpired())
            {
                token = await RefreshTokenAsync(token);

                await _tokenStore.SaveTokenAsync(token);
            }

            return(token.AccessToken);
        }
Ejemplo n.º 4
0
        public async Task <IReadOnlyCollection <Token> > GetTokensAsync(CancellationToken cancellationToken = default)
        {
            var token = await _tokenStore.GetTokenAsync(TokenType.AccessToken).ConfigureAwait(false);

            if (token == null)
            {
                return(new List <Token>());
            }

            return(new[]
            {
                token
            });
        }
        private async Task <ServerContext> GetAuthenticatedServerAsync(string name)
        {
            // Check if a named server was configured. Fallback to default options.
            if (!_serverContextOptions.ServerOptions.TryGetValue(name, out var options))
            {
                options = _repositoryOptions;
            }

            var server = new ServerContext
            {
                Url = options.Url.AppendSchema()
            };

            server.Authentication.AccessToken = await _tokenStore.GetTokenAsync(server,
                                                                                options.Authentication.ClientId, options.Authentication.ClientSecret);

            return(server);
        }
Ejemplo n.º 6
0
        private async Task GetTokenAsync()
        {
            var token = await tokenStore.GetTokenAsync(Config);

            if (token == null)
            {
                var url    = string.Format(URL, Config.AppId, Config.AppSecret);
                var result = await httpClient.GetAsync <WeChatTokenReponseResult>(url);

                token = new WeChatToken()
                {
                    access_token = result.access_token,
                    expires_in   = result.expires_in
                };

                await tokenStore.SaveTokenAsync(Config, token);
            }
            this.Token = token;
        }