6

タイトルが示すように、ネイティブの Java デスクトップ アプリケーションからbitbucket APIにアクセスしたいと考えています。Bitbucket では、アプリケーションで OAuth2 を使用する必要があります。そのためには、Oltuがその役割を果たさなければならないことがわかりました。

ただし、OAuth に関する私の知識は非常に限られているため、非常に早い段階で立ち往生しています。これが私がこれまでにしたことです:

ステップ 1:次の詳細を使用して、Bitbucket アカウントに OAuth コンシューマを登録しました。

Name: jerseytestapp
Description:
CallbackURL: http://localhost:8080/
URL: 

質問 1:このステップを自動化できますか?

ステップ 2:次の Java コードを実行しました。

package jerseytest;

import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
import org.apache.oltu.oauth2.common.exception.OAuthSystemException;

public class BitbucketJersey {

    public static void main(String[] args) {
    OAuthClientRequest request;
    try {
        request = OAuthClientRequest
                .authorizationLocation("https://bitbucket.org/site/oauth2/authorize")
                .setClientId("jerseytestapp")
                .setRedirectURI("http://localhost:8080")
                .buildQueryMessage();

            System.out.println(request.getLocationUri());

        } catch (OAuthSystemException e) {
            e.printStackTrace();
        }
    }

}

ステップ 3:次の locationURI を受け取り、Firefox で開きました

https://bitbucket.org/site/oauth2/authorize?redirect_uri=http%3A%2F%2Flocalhost%3A8080&client_id=jerseytestapp

質問 2:ブラウザを使用する必要がありますか、それとも Java アプリケーションから実行できますか?

Firefox で次の応答メッセージが表示されます。

Invalid client_id
This integration is misconfigured. Contact the vendor for assistance.

質問 3:次の正しいステップは何ですか? また、私のアプローチの何が問題なのですか?

4

2 に答える 2

4

主な問題は、クライアント ID の代わりに顧客名を指定していたことです。

.setClientId("jerseytestapp")

私が知っているクライアント ID を取得する唯一の方法は、クエリを実行することです: https://bitbucket.org/api/1.0/users/ your_account_name /consumers

しかしそれでもダメだったのでbitbucketのサポートに問い合わせてみました。ドキュメントが誤解を招くことが判明しました。実際には、代わりにクライアント キーを使用する必要があります。

.setClientId("ydrqABCD123QWER4567") // or whatever your case might be

https://bitbucket.org/site/oauth2/authorize?client_id= client_key &response_type=token

于 2015-07-07T16:52:23.173 に答える