忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 19:04 】 |
twitter機能をJavaで作る(続)
前回の記事はここ
twitterAPIを使うには(途中)


◎前回の流れ

twitterAPIの公式ページ
http://dev.twitter.com/doc

日本語で参考になるWikiのページ
http://usy.jp/twitter/index.php?Twitter%20API#y369b038


認証をしないで使うことのできるAPIを使った
String requestUrl = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=myname";
URL accessURL = new URL(requestUrl);
URLConnection con = accessURL.openConnection();


で、次にOAuth認証をしようとして頓挫。

これが前回までの経緯。


その辺を突破して、つぶやき投稿するところまでできたのでここに記す。

◎OAuth認証の仕方・アプリケーションの登録

twitter内のOAuth認証について書いたページ
http://dev.twitter.com/pages/auth

このページで、自分がtwitterを使うアプリケーションを登録する
http://twitter.com/apps/new

こういう画面が出る。


注意点としては、Application Type で Browser を選ぶこと。
でないと、認証しにいったときにOAuthCommunicationExceptionが発生する。(前回はここで頓挫した)
あと、Default Access Type は Read, Write, & Direct Messages を選ぶ。Readオンリーとかだと投稿できない。

登録すると、このような画面で確認できる。




◎OAuth認証・コーディング
参考にしたページ
http://blog.unfindable.net/archives/1697
コーディングについては、このページを見れば分かる。

流れとしては、

1.認証用のインスタンス
OAuthConsumer consumer_; //アプリケーション側認証用データを保持するインスタンス
OAuthProvider provider_; //twitter側認証用データを保持するインスタンス
を作成する。

2.認証用URLを作成する
String authUrl = provider_.retrieveRequestToken(consumer_, OAuth.OUT_OF_BAND);

3.ユーザが認証用URLに自分で行く。


4.ユーザがそこで表示されるPINを入力する


5.入力されたPINで認証
provider_.retrieveAccessToken(consumer_, pin);
これで例外が発生しなければ認証が成功したことになる。
詳しくは分からないけど、token とか tokenSecret というユーザ固有のデータを取得し、これが認証の鍵となるようだ。

6.つぶやきを投稿する
//URL作成。URLの引数としてつぶやきの本文が含まれる
StringBuilder strMessage = new StringBuilder(strTweet);
StringBuilder strBody = new StringBuilder("status=");
strBody.append(URLEncoder.encode(strMessage.toString(), "UTF-8").replace("+", "%20"));
URL url = new URL("http://api.twitter.com/1/statuses/update.xml?" + strBody);
//投稿
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
//認証(多分)
consumer_.sign(connection);
//成功判定
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK){}

投稿に失敗するときは、DefaultAccessTypeが間違っているとか、
あと1時間に70回までしかAPIリクエストできない制限にひっかかってるかも。


3.4.の流れが面倒くさい。
まあ、最初の一度だけやってもらえれば、consumer_のtokenとtokenSecretは同じユーザならずっと同じなので、記録しておけば2度目からはPIN入力とかは不要になる。
でも、firefoxのプラグインとか使えば、この辺の作業を一気にやってくれるものがあるらしい。
確かに、もどって来るHTTPだかXMLだかJSONだかを解析すればいい話だから、やればできるのかも。
しかし、ユーザが自分で「はい、認証します」のボタンを押す手間があるのをどうするか。


◎さらに・・・
twitter4j という twitterAPIのラッパがあるらしい。
http://twitter4j.org/ja/index.html
簡単に認証とか投稿とかできるらしいよ!?

PR
【2011/07/08 01:43 】 | Java | 有り難いご意見(0) | トラックバック()
<<XCodeとSDKがダウンロードできない | ホーム | 「突破する力」>>
有り難いご意見
貴重なご意見の投稿














虎カムバック
トラックバックURL

<<前ページ | ホーム | 次ページ>>