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
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 に表示されます
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 ディレクトリにあります
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 認証 で検索するとでてきます