AutoRest 在构造函数中需要 ServiceClientCredentials,但是如果不实例化客户端对象我就无法获取该数据

AutoRest is requiring ServiceClientCredentials in the constructor, but I can't obtain that data without instantiating the client object

我使用 AutoRest 生成了一个 API 客户端并使用了 --add-credentials 参数以便我可以传入不记名令牌。为了获得令牌,我需要能够实例化对象并像这样调用我的登录方法:

var client = new IOIWebAPI(new Uri("https://localhost:44325", UriKind.Absolute));
var loginResult = client.Login(authModel);

问题是每个构造函数都需要 ServiceClientCredentials。据我了解,我需要创建一个 TokenCredentials 的实例,其中包含令牌字符串。但是我不能那样做,因为如果不调用登录我就无法获取令牌字符串。如果没有令牌字符串,我将无法调用登录。

我确定我只是误解了如何使用 API 客户端。但是关于我在这里做错了什么有什么想法吗?

我最好的猜测是 --add-credentials 不支持未经身份验证的端点。当您添加信用时,AutoRest 假定一切都需要授权。我为此提交了 issue,但我怀疑它不会很快得到解决。

我的解决方法是创建一个 TokenHelper class。我将 AutoRest 从我的登录端点生成的代码复制并粘贴到 class。所以代码保持一致,但这并不理想,因为如果它发生变化,我可能会忘记更新端点。

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);