public async Task <SalesforceClient> CreateClientAsync(string name, ApiVersion apiVersion = null, string oauthConfigName = "__default") { var savedToken = await this.GetTokenAsync(name); if (savedToken == null) { throw new KeyNotFoundException($"Connection {name} unknown"); } using (var authClient = await CreateAuthenticationClientAsync(new Uri(savedToken.InstanceUrl, UriKind.Absolute), oauthConfigName)) { this.logger.LogDebug($"Authenticating {name}..."); var newToken = await authClient.ExchangeRefreshTokenForTokenAsync(savedToken.RefreshToken); this.logger.LogDebug($"Authenticated {newToken.IdTokenUserInfo?.Name}..."); var salesforceClient = new SalesforceClient( httpClient: this.serviceProvider.GetRequiredService <IHttpClientFactory>().CreateClient(), salesforceToken: newToken, logger: this.serviceProvider.GetRequiredService <ILogger <SalesforceClient> >()); if (apiVersion == null) { this.logger.LogTrace("Establishing newest API version"); await salesforceClient.SetToUseNewestApiVersionAsync(); this.logger.LogTrace($"API version: {salesforceClient.ApiVersion}"); } return(salesforceClient); } }