我的问题是,我正在使用PowerShell脚本任务发布到Rest API,并希望避免使用个人访问令牌(PAT),而是使用OAuth。PAT会过期,我不希望所有发布在PAT过期时突然失败。通过在构建代理的上下文中使用OAuth运行PowerShell脚本,我可以避免此过期问题。我已经在发布的代理作业中勾选了“允许脚本访问OAuth令牌”。
为了保持简单,我正在运行以下内联PowerShell脚本来测试使用OAuth创建新的维基页面(“Bearer $env:SYSTEM_ACCESSTOKEN”):
$uri = "https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis/{wikiIdentifier}/pages?api-version=5.0&path=/Release%20Notes/Customers%20API/Release-299%20[Build:%2020191010.1]";
try {
$response = Invoke-RestMethod `
-Method PUT $uri `
-Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} `
-ContentType "application/json" `
-Body $json
} catch {
Write-Host "Message: " $_.Exception.Message;
Write-Host "StatusCode: " $_.Exception.Response.StatusCode.value__ ;
Write-Host "StatusDescription: " $_.Exception.Response.StatusDescription;
}
如果我使用Postman和个人访问令牌对上述URL执行HTTP PUT,则可以成功创建新的维基页面。但是,如果我在Azure DevOps发布的上下文中运行上述PowerShell脚本,则会收到HTTP 400“错误请求”的响应。我觉得这很奇怪,因为类似的PowerShell脚本任务可以在没有错误的情况下查询维基的Rest API以查找页面是否存在。
无法使用Bearer令牌(OAuth)通过维基的Rest API创建新的维基页面吗?还是我做错了什么?