Azure devops 如何使用从VSO API接收的身份验证令牌?

Azure devops 如何使用从VSO API接收的身份验证令牌?,azure-devops,azure-devops-rest-api,Azure Devops,Azure Devops Rest Api,我已经编写了一个节点应用程序,允许我使用Visual Studio Team Services(使用Microsoft帐户)进行身份验证。我知道我能够成功地使用我的组织帐户(即joe@contoso.com)登录,因为我收到了访问令牌和个人资料信息,如我的姓名和电子邮件地址 当我尝试通过对VSO的API调用(使用承载令牌策略)使用访问令牌时,我从服务接收到401错误,并显示以下消息 TF400813:用户的Windows Live ID\00030000BE8767F8@Live.com'; 未

我已经编写了一个节点应用程序,允许我使用Visual Studio Team Services(使用Microsoft帐户)进行身份验证。我知道我能够成功地使用我的组织帐户(即joe@contoso.com)登录,因为我收到了访问令牌和个人资料信息,如我的姓名和电子邮件地址

当我尝试通过对VSO的API调用(使用承载令牌策略)使用访问令牌时,我从服务接收到401错误,并显示以下消息

TF400813:用户的Windows Live ID\00030000BE8767F8@Live.com'; 未被授权访问此资源。

似乎嵌入在访问令牌中的帐户不是我登录时使用的帐户,这非常令人困惑。有人知道这是怎么回事吗


FWIW,我正在尝试发出工作项查询请求。

我传递帖子正文的方式出错。我认为这不应该导致401计划,但一旦我解决了它,我的电话就会按预期工作。与VSO API无关

我意识到这是一个古老的话题,但对于那些来自谷歌的人来说。 这取决于您在后续呼叫中如何设置凭据的访问令牌

下面这句话帮了我的忙

var connection = new VssConnection(new Uri("https://youraccountname.visualstudio.com"), new VssOAuthCredential("accessToken"));
var client = connection.GetClient<ProjectHttpClient>();
var projects = client.GetProjects().Result;
var connection=newvssconnection(新Uri(“https://youraccountname.visualstudio.com新的VssOAuthCredential(“accessToken”);
var client=connection.GetClient();
var projects=client.GetProjects().Result;

韦斯利·范·海耶几乎是对的(由于声誉不够,我无法对他的回答发表评论)。在oauth2访问令牌的情况下,适用于我的更新代码是:

VssOAuthAccessTokenCredential credentials = new VssOAuthAccessTokenCredential(AccessToken);
VssConnection connection = new VssConnection(new Uri("https://dev.azure.com/[your org]"), credentials);
var client = connection.GetClient<ProjectHttpClient>();
var projects = client.GetProjects().Result;
VssOAuthAccessTokenCredential凭据=新的VssOAuthAccessTokenCredential(AccessToken);
VssConnection connection=新VssConnection(新Uri(“https://dev.azure.com/[您的组织]”),证书);
var client=connection.GetClient();
var projects=client.GetProjects().Result;

多亏了中的答案2,我们才在大海捞针。

在您的示例中,“accessToken”变量代表了什么类型的值?如果我只是将“accessToken”替换为授权过程中接收到的令牌,作为字符串,我会得到错误“没有给出与所需的形式参数“grant”对应的参数…”