C# AutoRest需要构造函数中的ServiceClientCredentials,但我可以';t在不实例化客户机对象的情况下获取该数据
我使用AutoRest生成了一个API客户端,并使用C# AutoRest需要构造函数中的ServiceClientCredentials,但我可以';t在不实例化客户机对象的情况下获取该数据,c#,swagger,bearer-token,autorest,C#,Swagger,Bearer Token,Autorest,我使用AutoRest生成了一个API客户端,并使用--add credentials参数,以便传入一个承载令牌。为了获得令牌,我需要能够实例化对象并调用我的登录方法,如下所示: var client = new IOIWebAPI(new Uri("https://localhost:44325", UriKind.Absolute)); var loginResult = client.Login(authModel); 问题是每个构造函数都需要ServiceClientCredentia
--add credentials
参数,以便传入一个承载令牌。为了获得令牌,我需要能够实例化对象并调用我的登录方法,如下所示:
var client = new IOIWebAPI(new Uri("https://localhost:44325", UriKind.Absolute));
var loginResult = client.Login(authModel);
问题是每个构造函数都需要ServiceClientCredentials
。据我所知,我需要创建一个TokenCredentials
实例,其中包括令牌字符串。但是我不能这样做,因为我无法在不调用Login的情况下获取令牌字符串。我不能在没有令牌字符串的情况下调用Login
我肯定我只是误解了如何使用API客户端。但是关于我这里做错了什么有什么想法吗?我最好的猜测是,
--add credentials
不支持未经身份验证的端点。当您添加cred时,AutoRest假设所有内容都需要auth。我为此提交了一份报告,但我怀疑它不会很快得到解决
我的解决方法是创建一个TokenHelper
类。我将从登录端点生成的自动测试代码复制并粘贴到该类中。因此代码保持一致,但这并不理想,因为如果端点发生变化,我可能会忘记更新它
var tokenHelper = new TokenHelper(baseUri);
var tokenResult = tokenHelper.GetTokenAsync(authModel).GetAwaiter().GetResult();
var token = new TokenCredentials(tokenResult.AccessToken, "Bearer");
var client = new IOIWebAPI(baseUri, token);