PECLのOAuthでTwitter OAuth
少し前の話ですが、PECLのOAuthライブラリを利用して、TwitterにOAuthしてみたので、その過程を思い出しながらメモしておきます。
まずは、PECL OAuthのインストール。(環境はOSXです)
sudo port install php5-oauth
httpdを再起動して終わり。(だったはず。もしかすると、php.iniとかいじらないといけないかも。忘れました。)
で、実際にTwitterにOAuthするには、まずはTwitterでOAuthのConsumer keyと、Consumer secretを取得すべくアプリケーションの登録をこちらから行います。で、次はいよいよコードです。
OAuthのフローは、TwitterのDevサイトにわかりやすい絵がありますので、そちらを拝借してきました。このフローにそって、コードを説明。
// まずは、OAuthオブジェクトを生成します。
$oauth = new OAuth('あなたのConsumer Key','あなたのConsumer secret',OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
// フローのA、戻ってくるのがフローのB
$request_token = $oauth->getRequestToken('http://api.twitter.com/oauth/request_token');
// フローのCとDは、ブラウザーでのアクセスになります。Twitterの場合は、こんなフォーマットです。
echo "http://api.twitter.com/oauth/authorize?oauth_token=".$request_token["oauth_token"];
// フローのEとF(アクセストークンの取得)
$oauth->setToken($request_token['oauth_token'],$request_token['oauth_token_secret']);
$access_token = $oauth->getAccessToken('http://api.twitter.com/oauth/access_token');
// フローGの部分ですが、ここでは、Hello! world!!と、つぶやきつつ、レスポンスを出力してみます。
$params = array( 'status' => 'Hello! world!!' );
$oauth->setToken($access_token["oauth_token"],$access_token["oauth_token_secret"]);
$oauth->fetch('http://api.twitter.com/1/statuses/update.xml', $params, OAUTH_HTTP_METHOD_POST );
var_dump( json_decode( $oauth->getLastResponse() ) );
$oauth = new OAuth('あなたのConsumer Key','あなたのConsumer secret',OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
// フローのA、戻ってくるのがフローのB
$request_token = $oauth->getRequestToken('http://api.twitter.com/oauth/request_token');
// フローのCとDは、ブラウザーでのアクセスになります。Twitterの場合は、こんなフォーマットです。
echo "http://api.twitter.com/oauth/authorize?oauth_token=".$request_token["oauth_token"];
// フローのEとF(アクセストークンの取得)
$oauth->setToken($request_token['oauth_token'],$request_token['oauth_token_secret']);
$access_token = $oauth->getAccessToken('http://api.twitter.com/oauth/access_token');
// フローGの部分ですが、ここでは、Hello! world!!と、つぶやきつつ、レスポンスを出力してみます。
$params = array( 'status' => 'Hello! world!!' );
$oauth->setToken($access_token["oauth_token"],$access_token["oauth_token_secret"]);
$oauth->fetch('http://api.twitter.com/1/statuses/update.xml', $params, OAUTH_HTTP_METHOD_POST );
var_dump( json_decode( $oauth->getLastResponse() ) );
と言う流れです。
Posted in: 技術の話
1件のコメント
Comments RSS
TrackBack Identifier URI
ピンバック by Tweets that mention ブログを更新しました: PECLのOAuthでTwitter OAuth -- Topsy.com on 2010年4月20日 1:11 PM
コメントする


