twitter4j 非同期APIの利用

twitter4j の非同期APIを利用することについて勉強中です
今回も、以前行った Ubuntu で行う予定でしたが
アップグレード失敗のため、バックアップをとった VM の仮想マシンから
復旧しました
このため、少し異なる環境になっています
まずは、再度 twitter4j のダウンロードページ
からダウンロードします
ダウンロードするのは
twitter4j-android-2.2.6-SNAPSHOT.zip(Android向けのスリムバージョン)
です
これをダウンロードしたら、
mkdir twitter4j
でディレクトリを作成して
cd twitter4j でディレクトリ移動し
unzip unzip ~/ダウンロード/twitter4j-android-2.2.6-SNAPSHOT.zip
で解凍します
次に、この解凍ディレクトリの中にある
twitter4j-async-android-2.2.6-SNAPSHOT.jar
twitter4j-core-android-2.2.6-SNAPSHOT.jar

Eclipse のライブラリに追加しますので
まず
追加したいプロジェクトを右クリックして
File > New > Folder

lib ディレクトリを作成します
次に、この lib ディレクトリに
これをダウンロードしたら、
mkdir twitter4j
でディレクトリを作成して
cd twitter4j でディレクトリ移動し
unzip unzip ~/ダウンロード/twitter4j-android-2.2.6-SNAPSHOT.zip
で解凍します
次に、この解凍ディレクトリの中にある
twitter4j-async-android-2.2.6-SNAPSHOT.jar
twitter4j-core-android-2.2.6-SNAPSHOT.jar
をコピーして
プロジェクトを右クリック > Properties

Java Build Path をクリックし
Add JARs … をクリック
ディレクトリの中から
twitter4j-async-android-2.2.6-SNAPSHOT.jar
twitter4j-core-android-2.2.6-SNAPSHOT.jar
を選んでOKを押せば完了です
この2つのファイルは、解凍したファイルの
lib ディレクトリの中にあります

Twitter4j バージョンによる変更

Android web api プログラミング


参考に Twitter4j を使ってタイムラインを表示しようとしたのですが
import するところでつまづきました
import twitter4j.http.AccessToken;
import twitter4j.http.RequestToken;
この2つがインポートできずかなり悩みました
最初は、
twitter4j-android-2.2.6-SNAPSHOT.zip(Android向けのスリムバージョン)
というスリムバージョンをダウンロードしたのが原因かと思ったのですが
実際には、バージョンの違いによる変更が原因でした
参考書に載っていたのが ver2.1.12
今回使用しているのは ver 2.2.6 でした
バージョン 2.1.x から 2.2.x への移行
にこのあたりの変更点が載っていました
バージョンアップに伴い
twitter4j.http.* は twitter4j.auth.* へ移動しました。
ということでした
このため、
import twitter4j.auth.RequestToken;
import twitter4j.auth.AccessToken;
とすることでエラーがなくなりました
ちなみに、これに気がついたのは、
以前サーバー構築していたときに、バージョン違いにより再現できなくなることが
あると教えていただいたことを思い出したためでした
リファレンス関連の書籍の場合、このバージョン違いで
使い物にならなくなってしまうことがあるため
ある程度はネットで対処する必要性がありそうです

twitter4j クライアントテスト その2メモ

twitter4jのテストをしていて
すこし失敗したので、そのときのメモです
書籍どおりに行っているはずが
twitter = factory.getInstance();
と変更するはずが
Twitter twitter = factory.getInstance();
となっていたため、Android JUnit test でエラーになりました
ちなみに、このテストを行うと、実際につぶやきが行われますが
連続でテストするとエラーになるようです
これは
Twitter は同じ内容の当校を2回連続で行うとエラーになるそうです
なので、2回めからのテストには、
try{
Status status = twitter.updateStatus(“Twitter4j のテスト”);
printStatus(status);

“Twitter4jのテスト”
のところを
“Twitter つぶやきテストその2”
というように変更する必要があります

VMware Player と twitter API

twitter4j クライアントテスト
で実験したときと同じエラーがでたため
再検証しました
原因は、VMwarePlayer の仮想マシンでした
前回は、メールが届いていないのと、時刻合わせと両方しましたが
今回は、再起動と時刻合わせのみです
再起動すると問題が解決しましたので、ある程度の時刻がずれている場合
一度再起動したほうがよさそうです

twitter4j クライアントテスト

twitter4j の Android アプリ作成の勉強をしています
JUnit Test をしたときに
junit.framework.AssertionFailedError
at com.sample.test.TwitterTest.testTwitter(TwitterTest.java:86)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
というエラーがでたため、VMware player の時刻合せをしたものの
エラーが治らないため
今度は、twitter のアカウントを確かめるため
twitter アカウントで再度ログイン
最初は、VMware の仮想マシンの時刻の問題、もしくは
twitter developers に登録したアプリの
Callback URL がダメなのかと思いましたが、ここではありませんでした
どうやらメールが届いていないというメッセージがでているので
再度プロフィールを確認
これでもまだエラーがでるため、再起動
なぜかこれで直りました
念のため、以前 作成したほうの Webアプリのサンプルのほうでも
実験してみましたが、問題なくコンパイルできました
次回、同じような現象がおきたら、もう一度探って見ようとおもいます
ちなみに、実行してエラーがない場合、タイムラインが
LogCat に表示されます
Screenshot-Ubuntu Android - VMware Player

Android Twitter アプリ作成 その2

Android Twitter アプリ作成
アプリの登録をして、
Consumer key
Consumer secret
Access token URL
Callback URL
を取得したら
次に twitter4j をダウンロードします
http://twitter4j.org/ja/index.html#download
へアクセスし
最新安定版ビルドをダウンロードします
2011/11/29 の時点では
twitter4j-android-2.2.6-SNAPSHOT.zip(Android向けのスリムバージョン)
が新しいようです
書籍に載っていたのは
twitter4j-android-2.1.12-SNAPSHOT.zip
でしたので、もしかしたら
再現できずに途中でつまづくかもしれませんが
まずは実験です
ダウンロードしたら、解凍します
使っている環境が ubuntu なので、
ホームディレクトリのダウンロードディレクトリにありますので
mkdir twitter4j
cd twitter4j
unzip $HOME/ダウンロード/twitter4j-android-2.2.6-SNAPSHOT.zip
これで解凍します
これで下準備完了なので、
さっそくEclipse でプロジェクトを作成します
ついでに、テスト環境も作成するので
JUnit でテストできるようにします
今回はプロジェクト名を twitter4j にしてみました
ここへ twitter4j のライブラリをコピーしたいので
プロジェクトを右クリックして
new > Folder

フォルダを新規作成します
すると、assets ディレクトリの下に
libs ができます
ここへ
先ほど解凍した $HOME/twitter4j/lib/twitter4j-core-android-2.2.6-SNAPSHOT.jar
をコピーします
コピーはドラッグ&ドロップでOKです
最後にプロジェクトを右クリック > Properties

Java Build Path をクリックし
Add JARs … をクリック
ディレクトリの中から
witter4j-core-android-2.2.6-SNAPSHOT.jar
を選んでOKを押せば完了です
ちなみに、私の場合は
Twitter4j プロジェクトの中の libs ディレクトリにあります
twitter4j.png

Android Twitter アプリ作成

まず、最初に
過去記事のtwitter のアプリ登録
を参考に、Twitter アプリの登録をします
これは自分の過去記事なので、
もっとわかりやすい説明としては
Twitterアプリケーション登録の仕方
が参考になります
こちらは画像なども入っていますのでとても参考になります
それでは、作成開始です
まず
https://dev.twitter.com/
へアクセスし
Create an app をクリックします
次に、ログインする画面になりますので、
twitter アカウントとパスワードを入力
*がついているところは必須項目の入力事項です
まず
Name にはtwitter アプリの名前
これは、公開されるので、他の人とかぶるのはダメです
http: で始まるドメインとおなじですね
ただし、twitter の文字をふくむことはできませんので注意
Description
これには、アプリの概要をかきます
Android テストアプリとかそんなかんじで
Website
これは、自分のWebサイトのURLを書き込みます
ない場合には、この機会に適当にブログをつくってみましょう
Callback URL
これはほとんどつかうことはないようです
(本来は使うかもしれませんが、今回はテストなので)
あと、使うときの規約に同意しましたという意味の
Yes I agree
というチェックボックスへチェックをいれます
最後に、ちょっとわかりにくいのですが
認証の文字が崩したようなかんじで載っているので
これをスペースでわけて入力します
例えば、
ABC EDF
みたいなかんじで
最後に create twitter application
をクリックします
これで、作成が完了すると
Consumer key
Consumer secret
Access token URL
Callback URL
がわかるので、メモしておきます

Twitter4j

ドキュメントサイトは
http://twitter4j.org/ja/index.html
ちなみに、これは日本語
Twitter4j 1は Twitter が公開しているAPI のラッパークラス
自分でAPI を実行する処理を記述しなくてもTwitter4j でAPIを実行し
結果を受け取る処理を実行してくれる
100% Pure Java で記述されているので、ライブラリは他に必要ない
もう一つ重要なキーワードが OAuth 認証
これは、オーオースと読みます
Twiter では OAuth 認証を使います
昔はBasic 認証だったけど、セキュリティ問題から
OAuth 認証に変わりました
この認証方式は、マッシュアップをするときによく使われます
OAuth に関しては
APIアクセス権を委譲するプロトコル、
OAuthを知る

とか
第147回 便利と危険は裏返し ~ 知っておきたい、OAuthの仕組み ~
などで詳しい説明が載っています
ほかにも OAuth 認証 で検索するとでてきます