401使用来自TFS扩展的REST API获取服务端点列表时出错

时间:2018-02-02 03:23:57

标签: tfs tfs-sdk azure-devops-rest-api

我已在内部为TFS 2017开发了TFS扩展。 我需要获得项目中service endpoint的列表

我在TFS扩展(code-hub

中使用以下代码
private callTfsApi() {
    const vsoContext = VSS.getWebContext();
    let requestUrl = vsoContext.host.uri
        + vsoContext.project.id
        + "/_apis/distributedtask/serviceendpoints?api-version=3.0-preview.1";

    return VSS.getAccessToken().then(function (token) {
        // Format the auth header
        const authHeader = VSS_Auth_Service.authTokenManager.getAuthorizationHeader(token);

        // Add authHeader as an Authorization header to your request
        return $.ajax({
            url: requestUrl,
            type: "GET",
            dataType: "json",
            headers: {
                "Authorization": authHeader
            }
        }).then((response: Array<any>) => {

            console.log(response);
        });
    });
}

在每次请求时,服务器的状态为401(未授权)。

如果我使用邮递员和基本身份验证,则对服务端点API的调用有效。

此外,使用相同的代码但不同的API调用(projects)也可以。

let requestUrl = vsoContext.host.uri + "_apis/projects?api-version=1.0"; 

是否存在某种与服务端点API相关的已知错误,或者扩展程序是否必须指定scope? (不知道要包括哪一个)

2 个答案:

答案 0 :(得分:0)

服务端点在项目范围创建。如果您可以查询项目信息,您还应该能够查询它。

您可以尝试在https://docs.microsoft.com/en-us/vsts/extend/develop/manifest#scopes页面中添加相关范围vso.project,看看是否可以解决问题。

缩小此问题的另一种方法是直接使用Rest API从代码(不在TFS扩展内)调用,以查看问题是否与扩展端相关。

答案 1 :(得分:0)

添加范围:vso.serviceendpoint_query