首页 文章

如何在VSTS仪表板小部件中使用REST API从TFS获取构建定义?

提问于
浏览
4

我正在尝试使用仪表板小部件中的Microsofts 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 )})

2 回答

  • 0

    您可能需要启用备用凭据 . 看到这个链接:https://binary-stuff.com/post/how-to-enable-alternate-credentials-in-visual-studio-online-vso

    此链接对于以正确方式设置身份验证非常有帮助:https://www.visualstudio.com/en-us/docs/integrate/get-started/auth/overview

  • 0

    根据错误信息,您可能需要对TFS REST API进行身份验证 .

    VSTS和TFS有不同的身份验证方法,两者都可以通过PowerShell实现 .

    为了在脚本中使用TFS进行身份验证,您可以通过PowerShell将用户名和密码(屏蔽为秘密变量)传递给 PSCredential 对象,并在调用REST方法时使用 -Credential 开关 . 如下例子:

    $securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force   $credential = New-Object System.Management.Automation.PSCredential($User, $securePassword)       
    $releaseresponse = Invoke-RestMethod -Method Get -Credential $credential -ContentType application/json -Uri $Uri
    

相关问题