質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

jersey-clientでoAuthしてリクエストトークンを取得したい。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 2,121

リクエストトークンを取得し保存したい。

jersey2.x で、OAuth1.0aの認証を実施し、リクエストトークンを取得し保存する
RESTクライアントを作成したいと思っております。
(さらなる展望として、アクセストークンも取得し保存したい )

しかし、その実現コードがわかりません。サンプルをお持ちの方はおりませんでしょうか。

jerseyで実現できないのであれば、おすすめはないでしょうか。

以下ソースコードを拾ってきてアクセストークンは取得できた

流れ

・String authorizationUri = authFlow.start(); でPINコード取得URLを生成
・PINをSystem.inで入力
・System.out.println("rot007 accessTokne.getToken():" + accessTokne.getToken()); で
アクセストークンを表示
→リクエストはjerseyの中で実施してトークン取得のプロセスは準備されていない??
→API DOC 読みましたが、見つけられなかった

public class Main {

    private static final String CONSUMER_KEY = "ZI4xxxxxxxKmsWBxxPcxx3xxexx";
    private static final String CONSUMER_SECRET = "1xOAWQWy9qx4CxxM1xxxxxxmZ85BY0oYxxxxxxxaxxFxx9xF4K";

    private static final BufferedReader IN = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) {

        ConsumerCredentials consumerCredentials = new ConsumerCredentials(CONSUMER_KEY, CONSUMER_SECRET);

        OAuth1Builder oAuth1Builder = OAuth1ClientSupport.builder(consumerCredentials);

        //シグネチャはどこで生成するんだ。
//      oAuth1Builder.version("1.0");                    //oAuth version
//      oAuth1Builder.nonce("XXX");                    //GoogleのAPI使ったSAMPLEロジックで設定値を生成
//      oAuth1Builder.signatureMethod("RSA-SHA1");    //oAuthのシグネチャ生成方式
//      oAuth1Builder.timestamp("timestamp");            //systemTime
//      oAuth1Builder.realm("eWallet");                //mobile,Full site 識別で使用するエリアだが未使用。

        //リクエストトークンの取得方法が謎。
        OAuth1AuthorizationFlow authFlow = oAuth1Builder.authorizationFlow(
                "https://api.twitter.com/oauth/request_token",
                "https://api.twitter.com/oauth/access_token",
                "https://api.twitter.com/oauth/authorize").build();

        String authorizationUri = authFlow.start();
        System.out.println("Enter the following URI into a web browser and authorize me:");

        //PINコード確認できるURLが表示
        System.out.println(authorizationUri);
        System.out.print("Enter the authorization code: ");
        String verifier = null;
        try {
            //標準入力のまちが発生: PINを入力
            verifier = IN.readLine();
        } catch (IOException ex) {
            System.out.println("root005");
            throw new RuntimeException(ex);
        }
        System.out.println("root006");
        AccessToken accessTokne = authFlow.finish(verifier);

        //アクセストークン取得
        System.out.println("rot007 accessTokne.getToken():" + accessTokne.getToken());

    }

環境

Java8
Tomcat8
Eclipse mars

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る