那須です。
前回は、GoogleアカウントのClientLoginをZend GData CLで扱うクラスの説明をしました。今回は、Googleアカウント関連のもう1つの柱である AuthSub を扱うクラスを説明したいと思います。
Zend_Gdata_AuthSub
Zend GData CLには、AuthSubに対応するクラスとして、Zend_Gdata_AuthSubがあります。
Zend_Gdata_AuthSub には5つのメソッドがあります。
- getAuthSubTokenUri
- getAuthSubSessionToken
- getHttpClient
- getAuthSubTokenInfo
- AuthSubRevokeToken
getAuthSubTokenUri
引数
- $next
- Googleアカウントで認証が済んだ後に表示するURL
- $scope
- 認証した後利用するサービスのURL
- http://www.google.com/calendar/feeds/
- ↑Google Calendarを利用する場合に指定する
- $secure
- トークンをセキュアトークンとして利用する場合、1にする
- デフォルト:0
- $session
- トークンをセッショントークン(繰り返し利用する)場合、1にする
- デフォルト:0
戻り値
- GoogleアカウントへのURL
GoogleアカウントへのURLを生成するメソッドです。ユーザが戻り値のURLにアクセスし、Googleアカウント上で認証を行う流れとなります。認証後、$nextパラメータのURLにリダイレクトしますが、このときGETパラメータとして、トークンが付与されます。
- 例
echo printf(‘<a href=’%s’>こちらから認証を行ってください</a>’, Zend_Gdata_AuthSub::getAuthSubTokenUri(‘http://yakan.flatz.jp’, ‘http://www.google.com/calendar/feeds/’, false, true));
この例は、次のように表示されます
getAuthSubSessionToken
引数
- $token
- トークン
- $client
- Zend_Http_Clientオブジェクト
- デフォルト: null
戻り値
- セッショントークン
getAuthSubSessionToken()は、getAuthSubTokenUri()を通してGoogleアカウントから発行されたトークンを、セッショントークンに変換するメソッドです。セッショントークンを使うことで、認証が通過している扱いとなります。
- 例
$_SESSION[‘google’][‘token’] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET[‘token’]);
getHttpClient
引数
- $token
- セッショントークン
- $client
- Zend_Http_Clientオブジェクト
- デフォルト: null
getHttpClient()は、Zend_Gdata_ClientLogin::getHttpClient と同じく、Zend GData CLの他のクラスで用いるオブジェクトを返します。認証の方法が、セッショントークンを使うか、メールアドレス/パスワードを使うかのの違いとなります。
AuthSubRevokeToken
引数
- $token
- セッショントークン
- $client
- Zend_Http_Clientオブジェクト
- デフォルト: null
戻り値
- boolean
AuthSubRevokeToken()は、セッショントークンの破棄に用います。
getAuthSubTokenInfo
引数
- $token
- セッショントークン
- $client
- Zend_Http_Clientオブジェクト
- デフォルト: null
戻り値
- セッショントークンの状態を表す文字列
getAuthSubTokenInfo()は、セッショントークンの状態を問い合わせるのに用います。戻り値は、トークンが有効ならば、以下のような情報を返します。
Target=yakan.flatz.jp
Secure=false
Scope=http://www.google.com/calendar/feeds/
トークンが向こうの場合は、Googleからの結果HTMLをそのまま返します。例えば
<HTML>
<HEAD>
<TITLE>Token BASE64 decode error</TITLE>
</HEAD>
<BODY BGCOLOR=”#FFFFFF” TEXT=”#000000”>
<H1>Token BASE64 decode error</H1>
<H2>Error 403</H2>
</BODY>
</HTML>
getAuthSubTokenInfo()は有効/無効のチェックに限らず、有効な場合でも、自分で必要な情報を切り出さねばならず、正直使いづらい印象です。
Zend GData CL の今後の発展に期待したいと思います。
最後に
Google Calendar APIs を使ってみることを目標に始めたものの、未だに肝心のAPIまでたどり着けません…ですが、Googleアカウント認証APIは、Google Calendar APIs を使う場合、避けては通れないAPIです。もちろん、Googleの他のAPIを使う場合にも役立つかと思いますので、参考になればと思います。
いよいよ次回は Google Calendar APIs に関する話題に触れたいと思います。