abraham / twitteroauth

| カテゴリ:API, PHP, Twitter | コメント(0) | トラックバック(0)

Twitter APIのOAuth認証を利用するためのPHPライブラリ。abraham / twitteroauthからダウンロード可能。以下はtwitteroauth / DOCUMENTATIONの和訳かつ要約。

コードの入手

最終版をgitで入手可能:
git clone git://github.com/abraham/twitteroauth.git
もしくは下記でダウンロード可能:
http://github.com/abraham/twitteroauth/downloads

フローの概要

  1. クライアント証明書として使用するTwitterOAuthオブジェクトを作成する
  2. Twitterからの仮証明書をリクエストする
  3. TwitterのオーサライズURLを作成する
  4. ユーザーをオーサライズURLへリダイレクトする
  5. ユーザーがアクセスを認可し、Twitterから戻ってくる
  6. クライアント証明書、仮証明書を使用してTwitterOAuthオブジェクトを再作成する
  7. Twitterからトークン証明書を取得する
  8. クライアント証明書、トークン証明書を使用してTwitterOAuthオブジェクトを再作成する
  9. 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');

トラックバック(0)

トラックバックURL: http://tech.ludicmind.net/admin/mt-tb.cgi/142

コメントする

TwitThis

今読んでいる記事をTwitterに投稿