当我尝试使用PHP访问JIRA REST API时,未经授权(401)


Unauthorized (401) when I try to access JIRA REST API with PHP

我正在尝试将JIRA REST API与PHP一起使用。当我复制下面的url并将其直接粘贴到浏览器中时,效果很好。生成的问题以json形式返回。

但使用下面的代码,它不起作用。我收到未授权(401)作为返回消息。是的,我已经反复检查了凭据是否有效。这是我的代码:

$username = 'username';
$password = 'psw';
$url = "https://mycompany.atlassian.net/rest/api/2/issue/XXX-123";
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$result = curl_exec($curl);
echo $result;

有什么想法吗?

解决方案:在提供凭据时使用用户名而不是电子邮件。

事实证明,即使你在JIRA中使用电子邮件登录,也不是你在这里使用的电子邮件,而是用户名,可以在JIRA->Settings->Profile

中找到

尝试从url中删除https://部分。

尝试添加

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);