Googleカレンダーでのログイン〜スケジュール管理ソフトをS!アプリで作ってみよう(その18)

Googleカレンダーでは、ユーザーの認証が必要になる。(別にカレンダーだけではなくて、ほとんどサービスで必要なんだろうけど...) 認証の方式は2つあるようだ。

「ClientLogin」と「AuthSub」の2つの認証方式があるようだ。ClientLoginの方はデスクトップのアプリのような、スタンドアローンの単一ユーザがインストールして使用するもの向けである。AuthSubの方は、マルチユーザのWebアプリ向けである。今回作るスケジュール管理ソフトは、シングルユーザ向けなので、ClientLoginを使用する。

ClientLoginでは、まず最初に以下のURLへPOST要求を送信する。


https://www.google.com/accounts/ClientLogin
POSTのbodyには以下のパラメータを含める必要がある。
パラメータ説明
EmailGoogleアカウントにログインする時のメールアドレス。
PasswdGoogleアカウントにログインする時のパスワード。Unixのコマンドと同じくorがない
sourceアプリを一意に識別するための値。他の人の作成したアプリとかぶらなければなんでもいい。今回は、com.ettem-schduler-1とでもしておこう
service利用するGoogleのサービスの文字列。Googleカレンダーの場合は、「cl」

認証に成功すれば、以下のようなレスポンスがある。


HTTP/1.0 200 OK
Server: GFE/1.3
Content-Type: text/plain

SID=DQAAAGgA...7Zg8CTN
LSID=DQAAAGsA...lk8BBbG
Auth=DQAAAGgA...dk3fA5N

(注:「...」の部分はもっと長い。)

この中で、Authの値だけが必要になるので、この値を記憶させておき、認証が必要になるアクセス(つまり非公開にしている予定へのアクセス)を行うときには、ヘッダに以下の内容をセットする。

Authorization: GoogleLogin auth=DQAAAGgA...dk3fA5N

具体的な例はこちらのGoogle Codeのページ