rhaco: rhacoでTwitter OAuthを実現する方法
oauth.zipをダウンをロード
oauth.zip
library/oauth/に内容を展開。内容はOAuth.php, TwitterOAuth.php
Twitter OAuth Clientで( http://twitter.com/oauth_clients )アプリケーションを登録。登録内容は簡単。アプリケーション名とアプリケーションのURLを入力する。Request URLは下記index.phpのURLを入力すること。Request URLだけは間違えずに。後ほど登録内容は変更も可能なので気軽に。
登録するとconsumer keyとconsumer secretが表示されるのでこれをメモっておく。ここまでが前準備。
index.php
require('__init__.php'); Rhaco::import('oauth.TwitterOAuth'); Rhaco::import('network.http.Request'); $consumer_key = 'ここにconsumer keyを入力する'; $consumer_secret = 'ここにconsumer secretを入力する'; $req = new Request(); $req->usesession(); $to = new TwitterOAuth($consumer_key, $consumer_secret); $tok = $to->getRequestToken(); $state = $req->getSession('oauth_state'); if ($req->getVariable('oauth_token') != NULL && $req->getSession('oauth_state')) { $req->setSession('oauth_state', 'returned'); $state = 'returned'; } switch($state){ case 'returned': if ($req->getSession('oauth_access_token') === NULL && $req->getSession('oauth_access_token_secret') === NULL) { $to = new TwitterOAuth($consumer_key, $consumer_secret, $req->getSession('oauth_request_token'), $req->getSession('oauth_request_token_secret')); $tok = $to->getAccessToken(); $req->setSession('oauth_access_token', $tok['oauth_token']); $req->setSession('oauth_access_token_secret', $tok['oauth_token_secret']); } $to = new TwitterOAuth($consumer_key, $consumer_secret, $req->getSession('oauth_access_token'), $req->getSession('oauth_access_token_secret')); $content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', array(), 'GET'); var_dump($content); /* この2つの変数でOAuthでアクセスする echo $req->getSession('oauth_access_token'); echo $req->getSession('oauth_access_token_secret'); */ $req->clearSession(); break; default: $req->setSession('oauth_request_token', $tok['oauth_token']); $token = $tok['oauth_token']; $req->setSession('oauth_request_token_secret', $tok['oauth_token_secret']); $req->setSession('oauth_state', 'start'); $request_link = $to->getAuthorizeURL($token); echo 'Clickr for Twitter OAuth <a href="'.$request_link.'">'.$request_link.'</a>'; break; }
考え方は簡単。Twitterにconsumer keyとconsumer secretを送り、twitterへブラウザからアクセス。ログインしているtwitterユーザの情報からoauth_access_tokenとoauth_access_token_secretをGETで取得というもの。上記ではその2つの情報からOAuthがしっかりと通るかの確認も兼ねて https://twitter.com/account/verify_credentials.xml を取得。
アプリケーション登録時のconsumer keyとconsumer secret、ユーザそれぞれのoauth_access_tokenとoauth_access_token_secretのがあればOAuthでTwitterの操作が可能。
仕組みが分かればそんなにも難しくは無い。
OAuthでTwitterへは下記のようにアクセスする。下記ではTest OAuth update.の1行をOAuth経由でポストする。
Rhaco::import('oauth::TwitterOAuth'); $consumer_key = 'consumer key'; $consumer_secret = 'consumer secret'; $oauth_access_token = 'oauth_access_token'; $oauth_access_token_secret = 'oauth_access_token_secret'; $to = new TwitterOAuth( $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ); $req = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>"Test OAuth update."),"POST");