-2

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

当我尝试将访问令牌与对 VSO 的 API 调用一起使用时(使用不记名令牌策略),我收到来自服务的 401 错误,并显示以下消息。

TF400813: The user 'Windows Live ID\00030000BE8767F8@Live.com'; is not authorized to access this resource.

似乎嵌入在访问令牌中的帐户不是我登录的帐户,这非常令人困惑。有人知道这里发生了什么吗?

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

4

3 回答 3

0

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

以下为我做了诀窍。

var connection = new VssConnection(new Uri("https://youraccountname.visualstudio.com"), new VssOAuthCredential("accessToken"));
var client = connection.GetClient<ProjectHttpClient>();
var projects = client.GetProjects().Result;
于 2017-03-27T04:50:11.893 回答
0

Wesley van Heije 几乎是对的(由于声誉不足,我无法评论他的回答)。在 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;

感谢这里的第 2 条答案,因为它在大海捞针中找到了这根针。

于 2019-08-29T14:07:36.980 回答
0

我传递 POST 正文的方式出错。我认为这不应该导致 401,但是一旦我修复它,我的呼叫就会按预期工作。与 VSO API 无关。

于 2015-11-13T21:16:33.697 回答