Twitter APIのOAuth認証を利用するためのPHPライブラリ。abraham / twitteroauthからダウンロード可能。以下はtwitteroauth / DOCUMENTATIONの和訳かつ要約。
コードの入手
最終版をgitで入手可能:
git clone git://github.com/abraham/twitteroauth.git
もしくは下記でダウンロード可能:
http://github.com/abraham/twitteroauth/downloads
フローの概要
- クライアント証明書として使用するTwitterOAuthオブジェクトを作成する
- Twitterからの仮証明書をリクエストする
- TwitterのオーサライズURLを作成する
- ユーザーをオーサライズURLへリダイレクトする
- ユーザーがアクセスを認可し、Twitterから戻ってくる
- クライアント証明書、仮証明書を使用してTwitterOAuthオブジェクトを再作成する
- Twitterからトークン証明書を取得する
- クライアント証明書、トークン証明書を使用してTwitterOAuthオブジェクトを再作成する
- Twitter APIを利用する
専門用語
専門用語は、draft-hammer-oauth IETF RFCによりマッチするよう0.1.xから変更された。RFCはhttp://tools.ietf.org/html/draft-hammer-oauthで読める。いくつかの用語はTwitterで使用されているものと異なる。
- クライアント証明書:Consumer key/secret。Twitterにアプリ登録時に入手するもの。
- 仮証明書:以前にリクエストトークンとして知られていたもの。
- トークン証明書:以前にアクセストークンとして知られていたもの。
パラメーター
TwitterOAuthオブジェクト作成後に変更できるパラメーターがいくつかある。
- JSONの代わりにXMLを使う
- $connection->format = 'xml';
- JSONの自動デコードをやめる
- $connection->decode_json = FALSE;
- 独自のユーザーエージェント
- $connection->useragent = 'Custom useragent string';
- TwitterのSSL証明書を検証する
- $connection->ssl_verifypeer = TRUE;
その他のパラメーターはTwitterOAuth.phpに書かれている。
サンプルコードを使用した拡張フロー
TwitterOAuthを使用するには、TwitterOAuth.php, OAuth.phpとクライアント証明書が必要。クライアント証明書はhttps://twitter.com/appsにアプリを登録することで得られる。
サンプルファイルは以下に解説する。
ステップ0.ユーザーは、redirect.phpにリンクした"Sign in with Twitter"ボタンを表示するconnect.phpから開始する。このボタンはログインセクションのホームページに表示されなければならない。クライアント証明書はCONSUMER_KEY、CONSUMER_SECRETとしてconfig.phpに保存されている。アプリ設定ページに静的なcallback URLを保存するか、動的なcallback URLをステップ2以降に使用できる。サンプルがhttp://example.com/callback.phpで動作する。
ステップ1.ユーザーがredirect.phpに到達した時に、クライアント証明書を使用してTwitterOAuthオブジェクトを作成します。config.phpを使わない事も可能。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);// config.php のクライアント証明書を使用
$connection = new TwitterOAuth('abc890', '123xyz');
ステップ2.Twitterに仮証明書を問い合わせるために、作成した$connectionオブジェクトを使用する。動的なcallback URLを使用する場合は、パラメーターで渡せる。
$temporary_credentials = $connection->getRequestToken(); // アプリケーションの登録済みcallbackを使用する
$temporary_credentials = $connection->getRequestToken('http://example.com/callback.php?');
ステップ3.仮証明書があるので、ユーザーをTwitterに誘導してアプリを承認してもらう。第2のパラメーターとしてFALSEを渡すと、Twitterのサインインを使用しないようにできる。 http://apiwiki.twitter.com/Sign-in-with-Twitter
$redirect_url = $connection->getAuthorizeURL($temporary_credentials); // Twitterのサインインを使用する
$redirect_url = $connection->getAuthorizeURL($temporary_credentials, FALSE);
ステップ4.これでユーザーを送るTwitter URLの準備が完了した。パラメーターを付与することも可能。そのパラメーターはステップ5でTwitterから返される。
https://twitter.com/oauth/authenticate?oauth_token=xyz123
https://twitter.com/oauth/authenticate?oauth_token=xyz123&info=abc // info はユーザーと共に返ってくる
ステップ5.ユーザーはtwitter.comでログインしなければならない。その後アプリの許可/拒否を選択し、callbackに自動的に戻される。
ステップ6.ユーザーがcallback.phpに戻ってくる。仮証明書を使用して新しいTwitterOAuthオブジェクトを構築するアクセス許可は下りている。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'],
$_SESSION['oauth_token_secret']);
ステップ7.Twitterにトークン証明書を問い合わせる。これらはアプリケーションとユーザーを特定し、リクエスト時にパスワードのように機能する。動的なcallback URLが使用されていれば、oauth_varifierパラメーターも渡さなければいけない。通常トークン証明書はデータベースに保存されるが、このサンプルではセッション中のみ使用している。
$token_credentials = $connection->getAccessToken(); // アプリケーションの設定されたcallback URLを使用
$token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']);
ステップ7a.トークン証明書を入手したら、ユーザーをindex.phpへリダイレクトする。
ステップ8.トークン証明書を使って、新しいTwitterOAuthオブジェクトを作成する。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $token_credentials['oauth_token'],
$token_credentials['oauth_token_secret']);
ステップ9.最後に、ユーザーによって認証されたリクエストを作成する。GET, POST, and DELETE APIメソッドが使用可能。APIドキュメントからパスをコピーし、curser、in_reply_to_status_idのようなパラメーターの配列を付与することもできる。
$content = $connection->get('account/verify_credentials');
$connection->post('statuses/update', array('status' => 'Text of status here',
'in_reply_to_status_id' => 123456));
$content = $connection->delete('statuses/destroy/12345');


コメントする