Twitter OAuth クイックスタート - nojimage/CakePHP-Twim GitHub Wiki

システムの認証として、Twitter OAuthを利用する手順は以下のようになります。

1. Twitterアプリケーションの設定

既に dev.twitter.com でアプリケーションの登録を済ませていることが前提となります。

Consumer key, Consumer secretを控え、app/Config/database.phpに設定します。

    public $twitter = array(
        'datasource' => 'Twim.TwimSource',
        'oauth_consumer_key'    => 'YOUR_CONSUMER_KEY',
        'oauth_consumer_secret' => 'YOUR_CONSUMER_SECRET',
    );

1.1 Callback URLの指定

TwitterアプリケーションのCallback URLを以下のように設定してください

http://{YOUR_APP_URL}/twim/oauth/callback

{YOUR_APP_URL}は、あなたのアプリケーションのURLです。

もしくは、database.phpに以下のように設定します。

    public $twitter = array(
        'datasource' => 'Twim.TwimSource',
        'oauth_consumer_key'    => 'YOUR_CONSUMER_KEY',
        'oauth_consumer_secret' => 'YOUR_CONSUMER_SECRET',
		'oauth_callback' => '/twim/oauth/callback',        // <--- Add this
    );

2. Authコンポーネントの認証プロバイダを指定する

AppControllerでのAuthコンポーネントのauthenticateプロパティにTwim.Twitterを指定します。
また、ログインページをTwimデフォルトのページとします。


class AppController extends Controller {

// ...snip...

    public $components = array(
        'Session',
        'Auth' => array(
            'authenticate' => array(
                'Twim.Twitter' => array(/* options */),
            ),
            'loginAction' => array(
                'plugin' => 'twim',
                'controller' => 'oauth',
                'action' => 'login',
            ),
        ),
    );

// ...snip...

}

以上で基本の設定は完了です。

3. アクセスしてみる

それではあなたのアプリケーションへアクセスしてみてください。
認証が必要なページであれば、/twim/oauth/login へリダイレクトされるはずです。

「Sign in with Twitter」ボタンをクリックすると、Twittterの認証画面へリダイレクトされます。アプリケーションを承認すると、あなたのアプリケーションへ戻り、ログイン状態となります。

4. ユーザー情報の取得

認証したTwitterユーザーのユーザー名、アクセストークン等はセッションに格納されています。
以下のように、AuthComponent経由で取り出せます。

    $user = AuthComponent::user();

5. APIを呼び出す

Twitter APIの呼び出しはTwimプラグイン内の各モデルクラスを利用します。

ホームタイムラインを取得してみましょう。

	$TwimStatus = ClassRegistry::init('Twim.TwimStatus');

	// ログインユーザーのアクセストークンをセット
	$TwimStatus->getDataSource()->setToken(AuthComponent::user());

	// APIコール home timelineを20件取得
	$statuses = $TwimStatus->find(TwimStatus::FINDTYPE_HOME_TIMELINE, array('limit' => 20));

まず、Twitter StatusにアクセスするためにTwimStatusモデルを呼び出します。
次に、ログイン中のユーザーのアクセストークンをデータソースへセットします。
最後に、findメソッドを使ってAPIリクエストを行います。

これでTwitterからホームタイムラインを取得できます。