许多Azure DevOps API在引用用户时都将存储密钥作为输入。该存储密钥是您所在组织中用户的唯一标识符。我似乎无法弄清楚如何确定当前登录用户的存储密钥。
我知道我可以调用Get Profile API并指定Me
作为ID,但这通常会返回有关当前用户的信息-与特定组织无关。
< br />
List Users API可用于获取组织中所有用户的列表,但我不希望搜索结果以获取已登录的用户。而且Get User api需要一个用户描述符,并且似乎不允许我指定Me
来获取当前用户。
所以我要如何获取存储空间当前用户的密钥(甚至描述符)?
答案 0 :(得分:0)
由Get Profile API得到的descriptor
,它只能代表用户自己。换句话说,将访问服务器dev.azure.com
的身份(不是org,仅由服务器标识)。因此到达这里的descriptor
由于无法识别而无法用于组织。
此外,对于Get User api和List User api,它们都是组织级别的,这意味着其查询结果将是整个组织的查询结果。而且我们没有为Azure Devops rest api提供filter
功能。
因此,如果要通过在API URL中指定一位用户来filter
,很遗憾,很抱歉,在使用Azure Devops rest api时不支持此操作。您必须遵循文档中显示的限制URL格式。
作为解决方法,您可以在此处使用powershell脚本来实现过滤器。
您可以在Azure devops管道中执行脚本:
$url = 'https://vssps.dev.azure.com/{org}/_apis/graph/users?api-version=5.0-preview.1';
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get
$results = $response.value | Where {$_.displayname -eq "{your account name}"} #|
Write-Host "results = $($results | ConvertTo-Json -Depth 100)"
Write-Host $results.desciptor
或者在本地的Powershell ISE中运行它,它将比上一个更方便:
然后,您可以将desciptor
存储到一个参数中,并在Storage Keys - Get API中使用它。