Twitter4j-2.2.xを使ったOAuth認証のコーディング例androidとか日記androidアプリを暇つぶしで作っておりまして、その記録です。最近、iOSアプリとかIoTとかにも手を広げ始めたので、ブログタイトルに「とか」を入れました。「やりたいことを我慢しなくてよい世の中にしたい」という思いで仕事に取り組んでいます。・KOTOO(http://kotoo.in)という写真のまとめサイトを始めました。見てくれると嬉しいです。---以前、こちらのエントリーでTwitter4jの使い方を説明しましたが、2.1系から2.2系で使い方が変わったので、内容を修正しました。Twitterクライアントを作るに当たって、ラクしてxAuthなんて使わずにちゃんとOAuthを使いましょう、という内容です。いざ探すと、Twitter4jとSignpostの併用なんていう気持ち悪いコーディングや、返ってきたaccess_tokenをユーザーにメモらせたり、JavaScriptで解析したりするコーディング等、もうちょっと工夫しようよ的なサンプルばっかりで使い物にならなかったので、Twitter4jのみを使ってグチャグチャながらも自分で作りました。(このコードも気持ち悪いんですが。13(前のエントリーは6でした。)・Twitter4j-2.2.4(前のエントリーは2.1.3でした。)■前提1.アプリケーション登録が完了している。「ブラウザアプリケーション」として登録する。2.Twitterに飛ぶためのボタン1つだけのActivity(以下、Activity1)と、Twitterの認証画面を表示するActivity(以下、Activity2)の構成(※)。※Activity2用に、WebViewを使ったレイアウトをあらかじめ作成しておく。このレイアウトに設定したWebViewは、WebView01というIDにしています。URLには適当な文字列を設定しておく。URLとは別にしておいた方が混乱しない。2.下記コードの中で「oauth_verifier」という文字列が出てくるが、これはaccess_tokenとaccess_token_secretを付与してもらうためのキー。3.例外処理は簡略化のために省いています。■コーディング例(移行する場合もあると思うので、2.1系は紫色にして、コメントアウトしています。実装する場合は、青字と赤字だけでOKです。)●Activity1のコーディング例1.下記コードを、Activity2を呼ぶために、onCreateメソッド内のsetOnClickListener#onClickメソッドに記述します。myOauthはOAuthAuthorizationクラス型で、Activity1クラスのクラス変数。twitterはTwitterクラス型で、Activity1クラスのクラス変数。リクエストトークンの取得。requestTokenはRequestToken型で、Activity1クラスのクラス変数。ここは2.1系と同じです。認証用URLをインテントにセット。ここも2.1系と同じです。アクティビティを起動。REQUEST_CODEは任意のint型の値。2.Activity2で取得した値を使って、access_tokenとaccess_token_secretを取得するために、下記コードをonActivityResultメソッドに記述します。access_tokenとaccess_token_secretを取得する。ここからは2.1系と同じです。●Activity2のコーディング例(こっちはTwitter4jは関係無いので2.1系と同じです。)以下のコードを、ログイン処理を担うActivityクラスのonCreateメソッドに記述します。このコーディング例では、oauth_verifierを取得して、Intentを介してActivity1に戻すことを想定しています。画面遷移時にWebView内で画面遷移するようにする。しないと、標準ブラウザが開いてしまう。ページ描画完了時に呼ばれる。CALLBACK_URLは注意点1で書いた適当な文字列。URLから始まっていたら、認証成功とみなす。URLパラメータを分解する。oauth_tokenをURLパラメータから切り出す。oauth_verifierをURLパラメータから切り出す。oauth_tokenとoauth_verifierをインテントにセット。元のActivityに戻す。Activity1で設定した認証ページを表示。作ったサービスmyto.beToBeリストを作って共有するサービスです。(4)「ねちゃったー」がandronaviに掲載されました。「ねちゃったー」があのTarzanに掲載されました。