0

Redmine API に接続したい。ページはファイルによって保護されてい.htaccessます。ユーザー資格情報 (名前 + パスワード) が と Redmine で同じで.htaccessある限り、問題はありません。

ええと... 2 人のチームメイトが異なる資格情報 (エラー コード: 401, not authorized) を使用しており、それらを変更したくないだけです。

.htaccess実際、これは、 (資格情報で) 合格しないか、合格.htaccessしてもデータで Redmine を使用できないためだと思います。

私は何時間も (まあ、少なくとも 12:30 時から) 探していましたが、この問題を解決できませんでした。.htaccessおよび API 資格情報を正しく渡す方法がわかりません。

私のコード:

$sURL = 'https://myserver/redmine/';
$sAction = 'projects.json';
$sApiUser = 'user_name';
$sApiPass = 'user_pass';
$sHtAccUser = 'htacc_user';
$sHtAccPass = 'htacc_pass';
#$sURL = sprintf('https://%s:%s@myserver/redmine/',$sUser,$sPass);

$aOptions   = array(
    CURLOPT_RETURNTRANSFER  => TRUE,
    CURLOPT_USERPWD         => $sUser.':'.$sPass,
    CURLOPT_PORT            => 443,
    CURLOPT_CONNECTTIMEOUT  => 4,
    CURLOPT_TIMEOUT         => 6,
    CURLOPT_SSL_VERIFYPEER  => FALSE,
    CURLOPT_SSL_VERIFYHOST  => FALSE,
    CURLOPT_HTTPAUTH        => CURLAUTH_BASIC,
    CURLOPT_HEADER          => FALSE,
    #CURLOPT_HTTPHEADER     => array('Authorization: Basic '.base64_encode($sHtAccUser.':'.$sHtAccPass)),
    CURLOPT_FOLLOWLOCATION  => TRUE,
    CURLOPT_URL             => $sURL.$sAction.$sGetParamQuery);

$ch = curl_init();
if($ch === false)
{
    die('Failed to create curl object');
}           
curl_setopt_array($ch,$aOptions);
$mResult = curl_exec($ch);
$aCurlInfo = curl_getinfo($ch);     
$iHTTPStatus = (int) $aCurlInfo['http_code'];
curl_close($ch);
4

1 に答える 1

0

ですから、経験豊富な人と会話した後、「自分で」問題を解決することができました。

実際、htaccess と redmine は同じ認証方式 (HTTP Basic 認証) を使用しており、2 回使用することはできません。このため、個別の API キー (自分の redmine の /my/account にあります) を使用する必要があります。

両方の資格情報 (htaccess + redmine) が同じである限り、API キーは必要ありません。資格情報が異なる場合は...まあ、redmine にログインし、API キーを取得して使用する必要があります。快適な方法ではないかもしれませんが、実際に行く方法です。

于 2014-07-24T09:35:21.887 に答える