2

私のサイトでは、現在、bitbucket.orgでホストされているリポジトリの1つからjqueryを使用してタグのリストを生成しています。しかし、これを行うために、私はリポジトリを公開していました。私はそれをプライベートに保ちたいと思います。

リポジトリを非公開にしたまま、この方法でサイトにリポジトリへのアクセスを許可することは可能ですか。

コードは次のようになります(この形式では、すべてのタグのコンソールにリストが生成されます)。

$.ajax({
        url:"https://api.bitbucket.org/1.0/repositories/jeffreycwitt/publicrepository/tags",
        dataType: "jsonp",
        crossDomain: true,
        success: function (returndata){
           $.each(returndata, function(key, value){
               console.log(key)
    });
});
4

2 に答える 2

3

基本的に、「Authorizationヘッダーが必要」であることを学びました。そして、これはjqueryのJSONPリクエストでは実行できないというコンセンサスがあるようです。理由はよくわかりません。

file_get_contentsしかし、php呼び出しを介して承認ヘッダーを渡すphpスクリプトを作成することで、目的の結果を得ることができました。次に、上記のコメントで示唆されているように、ajaxスクリプトを使用して目的のデータをロードできます。phpスクリプトは次のようになります。

context = stream_context_create(array(
'http' => array(
    'header' => "Authorization: Basic " . base64_encode("$username:$password")
)
));

// Make the request 
$json = file_get_contents($url, false, $context);

//parse data
//turn json data into an array
$obj_a = json_decode($json, true);

//get all keys of array
$tags = array_keys($obj_a);

したがって、誰かがプライベートビットバケットリポジトリからすべてのタグを取得したい場合は、これがあなたのやり方です。Bitbucket apiのドキュメントには、CURLを使用する場合を除いて、プライベートリポジトリに認証する方法については何も記載されていません。ただし、CURLを使用していない場合は、ヘッダーを追加する必要があります。

それが誰かを助けることを願っています。(これをよりよく説明できると思われる場合は、この回答を自由に編集してください)。

于 2012-11-28T19:13:52.503 に答える
2

アカウントのパスワードが公開されないように、アプリのパスワードを使用して認証することもできます。

const username = 'your-username'; // USERNAME, not email
const appPassword = 'app-pass';
const repoOwner = 'you-or-your-team';
const repository = 'repository-name';

$.ajax({
    url: `https://api.bitbucket.org/1.0/repositories/${repoOwner}/${repository}/tags`,
    headers: {
        Authorization: 'Basic ' + btoa(`${username}:${appPassword}`)
    },
    success: console.log,
    error: d => console.log(d.responseText),
});
于 2018-02-26T13:20:51.220 に答える