我正在尝试通过php / curl和个人访问令牌访问Azure DevOps REST API,但是在身份验证过程中遇到了麻烦。
文档指出,必须先将pat转换为base64,然后将其添加到HTTP标头中,但是我无法正确执行此操作。这是我尝试过的:
function GetBuilds($url, $token) {
$ci = curl_init();
curl_setopt($ci, CURLOPT_URL, $url);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ci, CURLOPT_TIMEOUT, 30);
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ci, CURLOPT_HTTPHEADER, array(
"content-type: text/html",
"content-length: 0",
"Authorization: Basic ".base64_encode($token) // Several variants have been tried.
)
);
$buffer = curl_exec($ci);
curl_close($ci);
return $buffer;
};
$ url是指向DevOps API的链接,当使用浏览器调用(登录后)时,该URL起作用,但是,当调用具有此功能的页面时,它将返回字符串“对象已移至此处”。带有“此处”的bee,是指向Microsoft在线登录页面的链接。
答案 0 :(得分:1)
非常确定您需要将其转换为base64:
user@domain.com:token
不仅仅是令牌。 user@domain.com-是颁发令牌的用户
答案 1 :(得分:1)
丹尼尔·曼(Daniel Mann)的评论是解决方案(谢谢!),尽管我不允许直接将其标记为此类。将“授权”行更改为此:
"Authorization: Basic ".base64_encode(":".$token)
成功授权了请求。