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