【发布时间】:2016-12-28 21:07:40
【问题描述】:
我正在尝试使用仪表板小部件中 Microsoft VSTS SDK 的 REST API 在 TFS 2015 Update 3 服务器上获取所有现有构建定义:
VSS.init({
explicitNotifyLoaded: true,
usePlatformStyles: true
});
VSS.require("TFS/Dashboards/WidgetHelpers", "TFS/Build/RestClient", "VSS/Authentication/Services"],
function (WidgetHelpers, TFS_Build_Api) {
VSS.register("BuildStatusMonitor.Configuration", function () {
return {
load: function (widgetSettings, widgetConfigurationContext) {
var buildClient = TFS_Build_Api.getClient();
buildClient.getDefinitions().then(function(definition) {
//
}, function(reason) {
// 401
});
},
}
});
VSS.notifyLoadSucceeded();
});
不幸的是,我总是得到一个
TFS.WebApi.Exception:TF400813:资源不可用于匿名访问。需要客户端身份验证。
我做错了什么?
当我在 chromes 开发者控制台上发送一个 get 请求时,我得到了正确的响应:=/
$.get("http://*****:8080/tfs/TestReporting/DashboardWidgets/_apis/build/definitions?api-version=2.2").success(function(res) { console.log (res) })
【问题讨论】:
-
您是否在扩展清单中指定了范围:visualstudio.com/en-us/docs/integrate/extensions/develop/…?
-
好吧,这很尴尬。谢谢,Eddie,我真的忘了声明 vso.build 范围。你点燃了我的希望!虽然不幸的是添加范围并不能解决问题。我重新安装了扩展程序,但问题仍然存在。
-
发现我的错误。根本不允许请求 all 构建定义。调用 buildClient.getDefinitions("projectName") 效果很好。然而,非常感谢您的帮助,尤其是 Eddie 提醒我设置范围... ;)
标签: rest tfs authorization azure-devops azure-devops-rest-api