1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20779 -->
4 <sect1 id="zend.gdata.clientlogin">
5 <title>ClientLogin による認証</title>
8 ClientLogin を使用すると、<acronym>PHP</acronym> アプリケーションで
9 Google Data サービスへのアクセスのための認証ができるようになります。
10 ユーザの認証情報を、Http クライアントに指定します。
14 Google Data ClientLogin 認証についての詳細は、
15 <ulink url="http://code.google.com/apis/accounts/AuthForInstalledApps.html"> http://code.google.com/apis/accounts/AuthForInstalledApps.html </ulink>
20 Google のドキュメントでは、ClientLogin 方式は
21 "インストールするアプリケーション" に適しており、一方 AuthSub は
22 "ウェブアプリケーション" に適しているとされています。
23 これらの違いは、AuthSub はユーザとのやりとりが発生するということです。
24 ブラウザのインターフェイスを用いて、リクエストのリダイレクトを行います。
25 ClientLogin では <acronym>PHP</acronym> のコードでアカウント情報を提供します。
26 ユーザが直接認証情報を入力する必要がなくなります。
30 ClientLogin で使用する認証情報は、Google サービスの正当な認証情報でなければなりません。
31 しかし、それは <acronym>PHP</acronym> アプリケーションを使用するユーザ自身のものである必要はありません。
34 <sect2 id="zend.gdata.clientlogin.login">
35 <title>ClientLogin 認証済みの Http クライアントの作成</title>
38 ClientLogin を使用した認証済みの Http クライアントを作成するには、
39 静的関数 <methodname>Zend_Gdata_ClientLogin::getHttpClient()</methodname>
40 をコールし、Google アカウントの認証情報をプレーンテキストで渡します。
41 この関数の返り値は、<classname>Zend_Http_Client</classname> クラスのオブジェクトとなります。
45 オプションの三番目のパラメータには、Google Data
46 サービスの名前が指定できます。たとえば、'cl'
47 は Google Calendar を表します。デフォルトは 'xapi' で、
48 これは Google Data サーバの汎用的なサービス名を表します。
52 オプションの四番目のパラメータには <classname>Zend_Http_Client</classname>
53 のインスタンスを指定できます。これによって、
54 たとえばプロキシサーバなどのクライアント設定を行うことができます。
55 このパラメータに <constant>NULL</constant> を渡すと、
56 汎用的な <classname>Zend_Http_Client</classname> オブジェクトが作成されます。
60 オプションの五番目のパラメータには、Google Data
61 サーバがクライアントアプリケーションを識別するための短い文字列
62 (これはログ記録の際に使用します) を指定できます。
63 デフォルトでは、これは "Zend-ZendFramework" となります。
67 オプションの六番目のパラメータには、サーバが発行する
68 <trademark>CAPTCHA</trademark> チャレンジ用の文字列 ID を設定します。
69 これが必要となるのは、一度ログインを試みた際にサーバから
70 <trademark>CAPTCHA</trademark> チャレンジを受け取った後の再ログイン時のみです。
74 オプションの七番目のパラメータには、サーバが発行する
75 <trademark>CAPTCHA</trademark> チャレンジに対するユーザからの応答を設定します。
76 これが必要となるのは、一度ログインを試みた際にサーバから
77 <trademark>CAPTCHA</trademark> チャレンジを受け取った後の再ログイン時のみです。
81 以下の例は、<acronym>PHP</acronym> のウェブアプリケーションのコードです。
82 Google Calendar サービスに対する認証を行い、
83 認証済みの <classname>Zend_Http_Client</classname> を使用して <classname>Zend_Gdata</classname>
87 <programlisting language="php"><![CDATA[
88 // Google アカウントの情報を指定します
89 $email = 'johndoe@gmail.com';
92 $client = Zend_Gdata_ClientLogin::getHttpClient($email, $passwd, 'cl');
93 } catch (Zend_Gdata_App_CaptchaRequiredException $cre) {
94 echo 'CAPTCHA 画像の URL: ' . $cre->getCaptchaUrl() . "\n";
95 echo 'トークン ID: ' . $cre->getCaptchaToken() . "\n";
96 } catch (Zend_Gdata_App_AuthException $ae) {
97 echo '認証に失敗: ' . $ae->exception() . "\n";
100 $cal = new Zend_Gdata_Calendar($client);
105 <sect2 id="zend.gdata.clientlogin.terminating">
106 <title>Http クライアントの ClientLogin 認証の解除</title>
109 ClientLogin 認証を解除する方法はありません。というのは、これは
110 AuthSub のようにトークンを使用した認証ではないからです。
111 ClientLogin 認証に使用する情報は Google アカウントのユーザ名とパスワードであり、