OAuth認証を使用したTwitterアプリ
アンドロイドからツイッターOAuth認証を行う場合の大まかな手順
- ツイッターのアカウントを取得する。
- アプリケーション登録申請する。
- ツイッター用ライブラリのインストール
- プログラミング
ツイッターのアカウントを取得する。
ツイッターのサイトでアカウントを作成する。
アプリケーションを登録申請する。
このページからアプリケーションを登録申請する。
アプリケーションの種類をブラウザアプリケーションに設定する。(WebViewを使って認証させるため)
コールバックURLに「http://」から始まるURLを指定する。とりあえず「http://localhost」でも動くことを確認した。
試しに「file:///android_asset/index.html」みたいなURIを指定してみたがツイッターからコールバックが帰ってこなかった。
登録が終わったらここから登録したアプリを選択しConsumer keyとConsumer secretを確認しておく。
ツイッター用ライブラリのインストール
- twitter用ライブラリをtwitter4jのページからダウンロードする
- twitter4j-2.1.6.zipで試した。 ダウンロードしたファイルを展開しtwitter4j-core-2.1.6.jarを取り出す。
- 取り出したファイルをエクリプスのプロジェクトへコピーする。
- コピーしたjarファイルを右クリックしBuild Path→Add Build Pathを選択する
プログラミング
認証の流れ
- 取得したConsumer keyとConsumer secretとコールバックURLを使用しリクエストトークンをツイッターからゲット
// Twitterクラスのインスタンスを作成 twitter = new TwitterFactory().getInstance(); // カスタマーキーをセット twitter.setOAuthConsumer(KEY, KEY_SECRET); // リクエストトークンをゲット requestToken = twitter.getOAuthRequestToken(CALLBACK_URL);
- リクエストトークンから認証用URLを取得しWebViewにてそのURLのページを表示
// 認証用URLを取得 url = requestToken.getAuthorizationURL();
- ユーザーに認証してもらう。 認証が終わるとコールバックURLにoauth_tokenとoauth_verifierが戻ってくるのでそれをゲット
- リクエストトークンとoauth_verifierを使ってaccessTokenをツイッターからゲット
AccessToken accessToken; accessToken = twitter.getOAuthAccessToken(requestToken,oauth_verifier);
- accessTokenをプリファレンスを使用し保存
// プリファレンスに アクセストークンを保存 // (String型にするために2つに分割しています。) SharedPreferences pref = getSharedPreferences(PREFERENCE_NAME,MODE_PRIVATE); SharedPreferences.Editor editor=pref.edit(); editor.putString("oauth_token",accessToken.getToken()); editor.putString("oauth_token_secret",accessToken.getTokenSecret()); editor.commit();
ツイットする場合の流れ
- プリファレンスからaccessTokenを取得
// プリファレンスから保存したトークンを読み込み SharedPreferences pref = getSharedPreferences(PREFERENCE_NAME, MODE_PRIVATE); // トークンを取得 String token = pref.getString("oauth_token", "").toString(); // トークンシークレットを取得 String tokenSecret = pref.getString("oauth_token_secret", "").toString();
- accessTokenとConsumer key、Consumer secretを使用しツイッターの認証を行う
認証処理はツイット毎に必要ではなくて最初に一回実行する。// カスタマーキーをセット twitter.setOAuthConsumer(KEY, KEY_SECRET); // OAuth認証処理 twitter.setOAuthAccessToken(token, tokenSecret);
- ツイット処理
String str_msg = "つぶやき"; twitter.updateStatus(str_msg);