December 19, 2008

Google App Engine で Google GData API を使う (2)

前回の続きです。

Picasa での認証

えーっと、やりたいことは Picasa から private な画像の情報を取ってくることです。
そのためには Picasa 側で認証処理を通す必要があります。
具体的に何をやるかというと、private な情報にアクセスするための「トークン」を Picasa に発行してもらいます。
そのためには実際ちょっとややこしい手順を踏む必要があります。

扱うトークンには「AuthSub Token」と「AuthSub Session Token」の2種類があります。
「AuthSub Token」は一度しか使えないトークンです。
トークンが一度しか使えないとアプリケーション的にはちょっと不便なので、何度でも使えるトークンが欲しいところです。
そこで「AuthSub Session Token」です。
「AuthSub Session Token」を使えば何度でもデータを取ってこれます。

処理の流れとしては、まず「AuthSub Token」を Picasa に発行してもらい、それを使って「AuthSub Session Token」を取得する、というふうになります。
わかりやすいように絵にしてみました。

authsub_token_1.png
まず「AuthSub Token」を発行してもらいます。
Picasa 側でアクセス許可の操作を行った後、URL にトークンを含んだ状態でリダイレクトされてアプリ側に帰ってきます。

authsub_token_1.1.png
「AuthSub Token」をゲットしました。

authsub_token_2.png
取得した「AuthSub Token」を使って今度は「AuthSub Session Token」を発行してもらいます。

authsub_token_2.1.png
「AuthSub Session Token」をゲットしました。
このトークンはデータベースに保存するなどして大事に取っておきます。

authsub_token_3.png
「AuthSub Session Token」を使えば private な画像の情報も取得できます。

意外と面倒くさいですが、理解してしまえば簡単です。
あとは API を使ってどんなアプリケーションを作るか考えるだけです。

サンプルコード

以下にサンプルコードを置いたので、よかったら参考にしてください。

http://github.com/jugyo/using-picasa-web-albums-data-api

Google App Engine で動くように実装されています。

関連記事

Google App Engine で Google GData API を使う (1)

December 15, 2008

Google App Engine で Google GData API を使う (1)

GAE Hack-a-thon に行ってきました

GAE Hack-a-thon というのに行ってきました。
Google App Engine で何か作るハッカソンです。
渋谷にあるグーグルのオフィスで開催されました。
昼食のお弁当がおいしかったです。
ありがとうございました。

さて、僕はマッシュアップなアプリを Google App Engine を使って作ることに挑戦しました(マッシュアップっていう単語、最近あまり聞かなくなりましたね。)。
4人のチームを組んで取り組みました。
みんなでドキュメントを探したりサンプルコードを解読したりしながら作業したんですけど、なかなか楽しかったです。
チームを組んで何かを作るって、仕事以外ではあんまりやらないので新鮮でした。

gdata-python-client

具体的に何をやったかというと、Google Data API というものを使って Picasa から画像の情報を取ってくるプログラムを作りました。

gdata-python-client という便利なライブラリがあったのでこれを活用しました。
python で Google Data API を扱うためのライブラリです。

以下のページからダウンロードできます。
gdata-python-client

Picasa Web Albums Data API

Picasa からデータを取ってくるには、Google Data API に含まれる Picasa Web Albums Data API という API を使います。
gdata-python-client ライブラリに含まれている PhotoService クラスを使ってこの API にアクセスすることができます。
Picasa からちゃんと画像の情報が取ってこれるか以下のコードで確認してみました。

http://gist.github.com/35853

このコードを実行すると、<ユーザーID> に指定したユーザーのアルバムとそれに含まれる画像の情報が全て取得できます。

当然ながらこのプログラムでは private なアルバムのデータは取ってこれません。
private なデータを取得するためには、Picasa 側でアクセスを許可してやる必要があります。
その認証に関わる部分を Google App Engine 上で実装したんですけど、これがなかなか難しくて(というか全然理解していなくて)、一筋縄ではいきませんでした。

続く…