2011年1月31日月曜日

Google Data API について

Androidアプリ開発をしていて、悩んだ点についてリマインドの意味も込めて
記事にしておきます。

***********************************************************************

Googleドキュメントと連携するサンプルアプリとして、

IDとパスワードを固定値で渡して認証させた後に、一覧を取得するようなものを
イメージしていました。

すぐに終わると思っていましたが、長い道のりになりました。

***********************************************************************

Web上でサンプルソースを探すと、以外と簡単に見つかったので、
それらを参考にしながら手を加えていきました。

最初に外部JARファイルとして読み込んだものが「gdata-java-client」でした。

これを利用しているサンプルソースは多く、比較的スムーズにサンプルアプリ
の開発は進みました。

プログラムのコンパイルエラーをすべて取り除き、あとは起動するだけ
というところまで来て、プロジェクトがエラーになっていることに
気づきました。

しかし、プログラムにはエラー箇所が見当たらない!!

なぜだろうと思って調べ始めてからが、長くなりました。
もっとも、嵌ったのが「GoogleTransport.java」です。

色々と調査した結果、Android用に「gdata-android-2.2.1-alpha.zip」
というライブラリが存在しており、こちらを使えば良いということが
分かりました。

早速、ライブラリをダウンロードしてコンパイルをすると、
以下のコードがエラーとなります。
(create()がないと言われる)

HttpTransport transport = new GoogleTransport.create();



さらに調査を進めるとGoogleTransportクラスが

「gdata-2.2.1-alpha-client-googleapis.jar」

に存在していることが分かりました。

しかし、該当のJARファイルを外部JARファイルとして登録しても
エラーは消えません。

create()が存在しないのかと思い、GoogleTransport.javaをWeb上で調査すると
createメソッドが、ちゃんと記載されています。

ライブラリのバージョンを変更してみたりもしましたが、状況は改善せず
悶々としている間に、時間だけが過ぎて行きました。

最終的に以下の2つのファイルに入っているGoogleTransportクラスの
中身が違うということに気づくまでに大分時間が掛かってしまいました。
「google-api-client-googleapis-1.2.2-alpha.jar」
「gdata-2.2.1-alpha-client-googleapis.jar」

同じファイル名だから、同じ内容という先入観が無駄な時間を・・・orz
これを超えた後は、比較的スムーズにサンプルアプリが完了しました。


今回、調査の過程で雑多な知識をちょっとだけ得られたので、キーワードを
羅列しておきます。
どうやらGoogleやTwitterといった最近のWebサービスはBASIC認証ではなく、
oAuthやxAuthといった認証方式を採用しているらしい。
またAndroidではAcountManagerを利用することでGoogle連携を比較的簡単に
実装することができるようです。
しかしAcountManagerは、エミュレーターでは動作しないので注意が必要です。

以上、簡単な振り返りでした。