6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TwitterでのOAuth認証

Last updated at Posted at 2016-12-28

####まえがき
Twitter4Jを使ってTwitterクライアントを作ろうと思ったのですが、OAuth認証についての知識が皆無だったので少しお勉強してみました

####TwitterのOAuth認証
Twitterにはいくつかの認証がありますが、App-Only Authenticationでは、ツイートが呟けなかったり、DMの機能が制限されたりするらしいので今回は通常のOAuthで挑戦します。

######アプリケーションの登録
https://apps.twitter.com/
Twitterのデベロッパーサイトからアプリケーションを登録してAPIキーを取得しておく。

######OAuth認証
Twitterでは、OAuth認証にアクセストークンと呼ばれる鍵を使って処理をします。
なので、このアクセストークンを取得する必要があります。
アクセストークンを取得するのに必要なものが、リクエストトークン。
リクエストトークンを取得するのに必要なものが先に取得したAPIキーです。

APIキーを使ってリクエストトークン取得 → URLで認証画面へ飛び認証(PIN入力あり) → アクセストークン取得
という手順です

######サンプル

 public class OAuth {
    //フィールド
    OAuthAuthorization OAuth;
    RequestToken reqToken;
    
    //コンストラクタ
    OAuth(Configuration conf) throws TwitterException{
        OAuth = new OAuthAuthorization(conf);
        OAuth.setOAuthConsumer(conf.getOAuthConsumerKey(), conf.getOAuthConsumerSecret());
        //APIキー登録
        reqToken = OAuth.getOAuthRequestToken();
    }

    public void Auth() throws IOException{//URL取得、ブラウザ起動
         String url = reqToken.getAuthenticationURL(); //URL取得
         Desktop desktop = Desktop.getDesktop();
        
         try {
            URI uri = new URI(url);
            desktop.browse(uri);
         } catch (URISyntaxException ex) {
            Logger.getLogger(OAuth.class.getName()).log(Level.SEVERE, null, ex);
         }
    }
    
    public AccessToken getToken(String pin){//PINによるToken取得
        AccessToken accessToken = null;
        while(accessToken == null){
            try{
                if(pin.length() > 0){
                    accessToken = OAuth.getOAuthAccessToken(reqToken, pin);
                }else{
                    accessToken = OAuth.getOAuthAccessToken();
                }
            }catch(TwitterException http){
                if(http.getStatusCode() == 401){
                    System.out.println("PINが正しくありません");
                    break;
                }
            }
        }
    return accessToken;
    }
}

####まとめ
認証だけならできました
後は、XMLファイルにアクセストークン登録させて複数アカウントにも対応できるようにできるかなって感じです

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?