Zend_Gdata_ClientLogin.xml 6.0 KB

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