我正在为特定的发布管理实现 VSTS 的 Web 扩展。从那个扩展我需要为特定的发布定义开始一个新的发布。创建发布的先决条件是一组具体的使用过的工件及其正确的版本。这就是我的痛苦。
有一个 RESP API 调用(未记录),它提供工件列表,其中包含每个版本的一组版本,以及新版本要使用的预选默认工件版本。当您打开对话框(或侧面板)以创建新版本时,VSTS 本身会调用此类 API。它也在 VSTS Release API ( ReleaseManagement/Core/RestClient ) 中定义,函数名称为getArtifactVersions。
底层请求类似于https://{collectionName}.vsrm.visualstudio.com/{projectId}/_apis/Release/artifacts/versions?releaseDefinitionId={releaseDefinitionId}。
当我直接在浏览器中运行请求时,我得到了正确的答案(工件列表及其可用版本)。但是当我从 Web 扩展程序运行它时,我收到 401 错误:TF400813:用户 '7a6b0fe0-56fd-61f5-9a78-2e170802ac50' 无权访问此资源。
我很确定问题出在 vss-extension.json 清单文件中设置的范围内。我已经在文档中定义了所有可能的范围,但仍然没有成功。错误消息中的用户身份是我的身份,我对我们的收藏拥有管理员权限。当我亲自运行请求(使用个人访问令牌或仅登录浏览器)时,结果会正确提供。但是使用生成的Bearer令牌的同一用户随后是未经授权的。因此,从这种行为来看,我的猜测即将到来。清单范围中缺少某些内容。
您将文档中的所有范围(每个范围组中的最高范围)放入,但仍然没有成功。以下是他们的名单:
"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"
知道吗,我缺少哪个范围?