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 }); }
public async Task <TwitchAccessToken> AcquireTokenAsync() { var currentToken = await _tokenStore.GetTokenAsync(); if (currentToken?.HasTokenExpired() == false) { return(currentToken); } return(await RefreshTokenAsync()); }
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); }
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); }
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; }