Azure devops 如何调用VSTSRESTAPI来获取web扩展中发布定义的工件列表?

Azure devops 如何调用VSTSRESTAPI来获取web扩展中发布定义的工件列表?,azure-devops,azure-pipelines-release-pipeline,azure-devops-extensions,azure-devops-rest-api,Azure Devops,Azure Pipelines Release Pipeline,Azure Devops Extensions,Azure Devops Rest Api,我正在为VST实现web扩展,用于特定的发布管理。从这个扩展中,我需要为特定的发布定义启动一个新的发布。创建发行版的先决条件是使用的工件及其正确版本的具体集合。这就是我的痛苦 有一个respapi调用(未记录),它提供工件列表,其中包含每个工件的一组版本,以及预选的新版本将使用的默认工件版本。当您打开用于创建新版本的对话框(或侧面板)时,VSTS本身会调用此类API。它也在VSTS发布API(ReleaseManagement/Core/RestClient)中定义,函数名为getArtifac

我正在为VST实现web扩展,用于特定的发布管理。从这个扩展中,我需要为特定的发布定义启动一个新的发布。创建发行版的先决条件是使用的工件及其正确版本的具体集合。这就是我的痛苦

有一个respapi调用(未记录),它提供工件列表,其中包含每个工件的一组版本,以及预选的新版本将使用的默认工件版本。当您打开用于创建新版本的对话框(或侧面板)时,VSTS本身会调用此类API。它也在VSTS发布API(ReleaseManagement/Core/RestClient)中定义,函数名为getArtifactVersions

底层请求类似于https://{collectionName}.vsrm.visualstudio.com/{projectId}/\u API/Release/artifacts/versions?releaseDefinitionId={releaseDefinitionId}

当我直接在浏览器中运行请求时,我得到了正确的答案(工件及其可用版本的列表)。但是当我从web扩展运行它时,我得到401错误:TF400813:用户“7a6b0fe0-56fd-61f5-9a78-2e170802ac50”无权访问此资源。

我很确定问题出在vss-extension.json清单文件中设置的作用域的某个地方。我已经将在中定义的所有可能的作用域放在那里,但仍然没有成功。错误消息中的用户标识是我的标识,我对我们的集合拥有管理员权限。当我亲自运行请求时(使用个人访问令牌或仅登录浏览器),结果得到正确服务。但使用生成的承载令牌的同一用户则未经授权。所以从这种行为我猜是来了。清单作用域中缺少某些内容

您从文档中放入了所有范围(每个范围组中最高的范围),但仍然没有成功。以下是他们的名单:

"vso.agentpools",
"vso.build_execute",
"vso.release_manage",
"vso.code_manage",
"vso.packaging_manage",
"vso.work_write",
"vso.agentpools_manage",
"vso.chat_manage",
"vso.dashboards_manage",
"vso.entitlements",
"vso.extension_manage",
"vso.extension.data_write",
"vso.gallery_manage",
"vso.identity",
"vso.notification_manage",
"vso.profile_write",
"vso.project_manage",
"vso.symbols_manage",
"vso.test_write"
知道我缺少哪个范围吗?

我在这里报告了一个问题:,您可以遵循

您可以发送带有个人访问令牌的http请求来检索必要的数据

您还可以获取发布定义,然后通过相应的RESTAPI获取每个工件版本,例如