OAuth認証ってナニ?のエントリで紹介したWriting A Simple Twitter Client Using the PHP Zend Framework’s OAuth Library (Zend_Oauth)のブログエントリに掲載されているZend_Oauthを利用して、TwitterでOAuth認証を行うためのチュートリアルを書き留めておきます。
Zend_Oauthライブラリをダウンロード
Zend Frameworkの最新バージョン(本エントリ執筆時点)であるV1.9.5では、Zend_Oauthライブラリは本流(main trunk)には組み込まれておらず、インキュベータ(incubator:孵化器)の中で開発が進められています(次期バージョンのV1.10では、本流に組み込まれる予定のようです)。そのため、Zend Frameworkのダウンロードサイトで入手できるZend FrameworkにはZend_Oauthが含まれていません。Zend_Oauthライブラリを入手するためには、SVN経由でインキュベータのソースを別途ダウンロードする必要があります。
Zend Framework Wiki内に、Zend FrameworkのソースをSVNでダウンロードする方法が詳しく書かれています。
UNIX系OSの場合は、以下のsvnコマンドでチェックアウトします。
svn checkout http://framework.zend.com/svn/framework/standard/incubator/
Windowsの場合は、TortoiseSVNを使ってチェックアウトしましょう。

自分でチェックアウトするのが面倒な方は、Zend_Oauthのライブラリだけを抽出したソースをアーカイブしたものをこちらに置いておきますのでダウンロードしてください(基本的にはSVNで最新のソースを入手することをお薦めします)。
ディレクトリ/ファイル構成
ここで紹介するチュートリアルでは、以下のようなディレクトリ/ファイル構成で進めていきます。
+ application/
| + controllers/
| | + OauthController.php
| |
| + models/
| + OauthConsumer.php
| + config.ini
|
+ public/
| + index.php
|
+ zf/
+ incubator/
| + library/
| + Zend/
|
+ library/
+ Zend/
ダウンロードしたZend_Oauthライブラリは、zf/incubator/libraryディレクトリに配置します。本流のZend Frameworkライブラリはzf/libraryに配置しています。public/index.phpにはアプリケーションのフロントエンドコントローラーを、application/controllers/OauthController.phpはOAuth認証を行うアクションコントローラーを、OAuthコンシューマーを実装したクラスをapplication/models/OauthConsumer.phpにそれぞれ実装していきます。application/models/config.iniには、OAuth認証で必要となるパラメーターを記述します。
インキュベータのソースを組み込む
インキュベータ内にあるZend_Oauthライブラリを、本流のZend Frameworkライブラリと同じようにロードできるように、public/index.phpでインキュベータのソースをインクルードパスに追加します。
define('ROOT_DIR', '/path/to/root/'); set_include_path( ROOT_DIR . 'zf/incubator/library' . PATH_SEPARATOR . ROOT_DIR . 'zf/library' . PATH_SEPARATOR . get_include_path() );
ROOT_DIRは、上記ディレクトリ構成のルートディレクトリに読み替えてください。
OAuth認証のパラメーターを設定する
冒頭で紹介したブログエントリでは、OAuth認証のパラメーターを配列($configuration)に格納していますが、PHPソースにパラメーターをハードコーディングするのは汎用性に欠けるので、application/models/config.iniにパラメーターを記述してZend_Config_Iniを使ってロードするようにします。ここでは、TwitterのOAuth認証に最低限必要なパラメーターを[twitter_oauth]セクションに記述します。
[twitter_oauth] siteUrl = http://twitter.com/oauth callbackUrl = http://yourdomain/oauth/callback consumerKey = xxxxxxxxxx consumerSecret = xxxxxxxxxx
- siteUrl
OAuth認証のエントリポイントとなるURLです。
TwitterでOAuth認証をするのであればhttp://twitter.com/oauthとなります。 - callbackUrl
OAuth認証後にコールバック(リダイレクト)されるURLです。
アプリケーションは、このコールバックURLを介してOAuthサーバー(例えばTwitter)からアクセストークンを受け取ります。
yourdomainの部分はアプリケーションのホスト名に読み替えてください。今回のチュートリアルでは、oauthコントローラーのcallbackアクションでアクセストークンの処理を行います。 - consumerKey/consumerSecret
アプリケーションに発行されたConsumer keyとConsumer secretです。
Consumer keyとConsumer secretの取得方法については、TwitterにOAuthクライアントアプリを登録する方法のエントリを参照してください。
準備完了
これでZend_Oauthを使ったOAuthコンシューマーを実装する準備が整いました。後編では、OAuthコンシューマー(OauthConsumer.php)とOAuth認証用のアクションコントローラー(OauthController.php)を実装していきます。
2009/12/15 at 13:51
[...] Zend_Oauthを使ってOAuth認証するチュートリアル(前編) [...]