TuitterをOAuthで使う

Tuitterを従来のベーシック認証ではなく、OAuthによって認証させることも出来るようになりました。

ただし、そのためには利用環境が以下の要件を満たしている必要があります。

クライアントの登録

まず、クライアントとなるTwitterアプリケーションを登録する必要があります。これによってセッション固定攻撃などの脆弱性からユーザを守ると共に、メッセージクライアントが「web」「api」などではなく、自分のクライアント名を表示することが出来るようになります。

登録には、Twitterにログインした状態で にアクセスします。 「新しいアプリケーションを追加」を選んで、任意のクライアントを作成してください。

この際、「あなたの招待状」という項目で選択を迫られます。これはアクセスキーを取得する際の方法に関わってくるのですが、基本的にはどちらを用いていただいても構いません。
Tuitterでは付録としてブラウザベースでアクセスキーを取得する方法を提供していますので、それを利用される場合は「Browser」を選択するようにして下さい。そして、「Callback URL」には後述するコールバック用のページを配置してもらいますので、自分がページを配置出来るURLを指定することになります。これは後で変更も可能です。

「Default Access type」は、初期設定が「Read-only」になっています。作成するアプリケーションからメッセージの送信などを行う場合(大抵は行うと思います)は、「Read & Write」に変えて下さい。

最後に保存すると、「Consumer key」と「Consumer secret」が表示されます。これを覚えておいて下さい。

アクセスキーの取得

次に、アクセスキーを取得します。

Googleなどで調べれば方法は幾つか見つかると思いますが、ここでは付録として同梱した tuitter4oauth.php を使って取得する方法を説明します。

まず、Tuitterディレクトリに入っている tuitter4oauth.php を、任意の場所にコピーします。これは外部からアクセスできなければいけないので、htdocsの下などに配置して下さい。そしてエディタでファイルを開き、先頭の2行を先程作成したクライアントのコンシューマ・キーとシークレットに書き換えます。

$conskey = 'YOUR_CONSUMER_KEY';
$conssec = 'YOUR_CONSUMER_SECRET';

保存後、このページへブラウザからアクセスします。この時、ボットなど認証したいユーザでTwitterにログインしてある状態であることを確認して下さい。

うまくいくと、クライアントの接続可否を確認するページが表示されるはずです。対象クライアントが先程作成したものであること、対象ユーザが正しいことなどを確認して、「承認する」をクリックしてください。

すると、アクセスキーとアクセスシークレットが表示されると思います。これをどこかへ保存しておいて下さい。

TuitterOAuthオブジェクトを作成する

あとは、Tuitterオブジェクトの代わりに TuitterOAuth を作成するだけです。
このクラスは自動的には読み込まれないので、使う前に require するようにして下さい。
引数は、先程取得したコンシューマキーとシークレット、アクセスキーとシークレットの4つです。

$tuitter = new TuitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET);

作成したオブジェクトは Tuitter を継承したもので、全く同様に利用することが出きます。