5

基本的に私が欲しいのは、ログインして、マイルストーン内のすべての未解決のバグのような単純なフィルターからの情報を表示することです。私がそこまで病気になると、ドキュメントを処理することができなくなります

単純なPHPを使用したいと思っています。これは、PHPを初めて使用するため、コーディングが複雑になるほど、理解が難しくなるためです。

このスクリプトは、私が成功するのに最も近いものです。

    <?php

define('JIRA_URL', 'https://mysite.atlassian.net');
define('USERNAME', 'me@gmail.com');
define('PASSWORD', '11111');

function post_to($resource, $data) {
        $jdata = json_encode($data);
        $ch = curl_init();
        curl_setopt_array($ch, array(
                CURLOPT_POST => 1,
                CURLOPT_URL => JIRA_URL . '/rest/api/2/' . $resource,
                CURLOPT_USERPWD => USERNAME . ':' . PASSWORD,
                CURLOPT_POSTFIELDS => $jdata,
                CURLOPT_HTTPHEADER => array('Content-type: application/json'),
                CURLOPT_RETURNTRANSFER => true
        ));
        $result = curl_exec($ch);
        curl_close($ch);
        return json_decode($result);
}

function create_issue($issue) {
        return post_to('issue', $issue);
}

$new_issue = array(
        'fields' => array(
                'project' => array('key' => 'FOO'),
                'summary' => 'Test via REST',
                'description' => 'Description of issue goes here.',
                'issuetype' => array('name' => 'Story')
        )
);

$result = create_issue($new_issue);
if (property_exists($result, 'errors')) {
        echo "Error(s) creating issue:\n";
        var_dump($result);
} else {
        echo "New issue created at " . JIRA_URL ."/browse/{$result->key}\n";
        var_dump($result);
}
?>

http://mysite.atlassian.net/browse/で作成された新しい問題を返します

しかし、そこにvar_dump($ result)を入れると、nullが返されるだけなので、jira URLが間違っているのか、パスワードが間違っているのか、新しいRESTAPIの古いコードなのかわかりません。

APIに対して1つの簡単なクエリを実行し、PHPページに返されるものをすべて確認できれば、私は幸せなキャンピングカーになります。上記の例は新しい問題を作成します。これは私が使用していた例ですが、あらゆる種類のデータを返すだけで問題ないので、私の主な問題は有効な接続を取得し、いくつかの情報を返すことです。その後、いくつかの異なることを試みます。

管理者アクセス権はありますが、管理者側で何かを有効にする必要があるかどうかわかりませんでした。

4

2 に答える 2

14

私は自分が何をする必要があるかを理解しました。ネット上にはたくさんの例がありますが、このような単純なものを見つけることができなかったので、うまくいけば他の誰かに役立つでしょう

$username = 'xxx';
$password = 'xxx';

$url = 'https://xxx.atlassian.net/rest/api/2/Issue/Bug-5555';

$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);

$issue_list = (curl_exec($curl));
echo $issue_list;
于 2012-11-22T03:12:26.073 に答える
3

このページに続いて...

https://developer.atlassian.com/jiradev/api-reference/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-basic-authentication

最近では、ヘッダー認証を使用する必要があります。これは、次のようになります。このトレッドの例を変更します。

$username = 'user';
$password = 'pass';

$url = 'https://www.jiradomain.com/rest/api/2/issue/PROJECT-321/worklog';

$curl = curl_init();

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . base64_encode("$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);
curl_setopt($curl, CURLOPT_VERBOSE, true);

$verbose = fopen('php://temp', 'rw+');
curl_setopt($curl, CURLOPT_STDERR, $verbose);

$issue_list = (curl_exec($curl));
echo $issue_list;

$result = curl_exec($curl);
if ($result === FALSE) {
    printf("cUrl error (#%d): %s<br>\n", curl_errno($curlHandle),
           htmlspecialchars(curl_error($curlHandle)));
}

rewind($verbose);
$verboseLog = stream_get_contents($verbose);

echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
于 2015-03-18T15:44:30.557 に答える