Wednesday, March 30, 2011

Google Spreadsheets を Androidから扱う (1)

Androidアプリで扱うデータを外部のSpreadsheetに保存することを目的とします。

library

今回はGoogle API Client Library for Javaの1.3.1-alphaを使ってみます。
とりあえず,プロジェクトに次の3つのjarファイルを参照するように設定いたしました。
  • google-api-client-1.3.1-alpha.jar
  • google-api-client-googleapis-1.3.1-alpha.jar
  • dependencies/guava-r08.jar
google-api-client-extensions-1.3.1-alpha.jarは Google App Engine用なので,今回は含めません。依存関係は試行錯誤の結果です。dependecies以下のjar(soruceは除く)を予め含めた方が今後楽かもしれません。

認証

Spreadsheetなど扱う前に,アプリケーションへ認証を与えることが必要になります。 ここではOAuthを用いた認証を行います。
具体的な手順は, OAuth 1.0a for Google API's JavaDocに記載されています。
まずは,temporary credentials token ("request token") を入手します。 installed application では signature method に "HMAC-SHA1",consumerKeyとclientSharedSecretに"anonymos"を使うように求められていますので,それに従います。
    HttpTransport transport = new ApacheHttpTransport();
    GoogleOAuthGetTemporaryToken temporaryToken = new GoogleOAuthGetTemporaryToken();
    OAuthHmacsinger signer = new OAuthHmacSigner();
    signer.clientSharedSecret = "anonymous";
    temporaryToken.signer = signer;
    temporaryToken.displayName = appname;
    temporaryToken.consumerKey = "anonymous";
    temporaryToken.scope = "https://spreadsheets.google.com/feeds/";
    temporaryToken.transport = transport;
displayNameには,このアプリケーションの名前(String 型)を入れます。scopeに入るべき値は,Google Data Protocol FAQを参照してください。
それでは,TemporaryTokenの値を入手してみます。
    OAuthCredentialsResponse credentials = temporaryToken.execute();
戻り値のtoken値を利用して,GoogleOAuthAuthorizeTemoraryTokenUrlを作成します。これで,ユーザにアクセスしていただくurlが得られます。
    if (credentials != null) {
        GoogleOAuthAuthorizeTemporaryTokenUrl temporaryTokenUrl = new GoogleOAuthAuthorizeTemporaryTokenUrl();
        temporaryTokenUrl.template = "mobile";
        temporaryTokenUrl.temporaryToken = credentials.token;
        // Uri uri = new Uri(temporaryTokenUrl.build());
        Log.d(TAG, "temoraryTokenUrl: " + temporaryTokenUrl.build());
    }
実行すると, temoratyTokenUrl の値として,
https://www.google.com/accounts/OAuthAuthorizeToken?btmpl=mobile&oauth_token=...some_oauth_token....
が得られました。
この次は,このURLをWebViewに表示させまして,アプリケーションの認証を行います。

No comments: