0

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

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

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

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

4

1 回答 1

1

我最好的猜测是它--add-credentials不支持未经身份验证的端点。当您添加凭据时,AutoRest 假定所有内容都需要身份验证。我为此提交了一个问题,但我怀疑它不会很快得到解决。

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

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);
于 2019-06-11T21:31:49.873 回答