twitteroauthの使い方(php)
php でtwitterとoauth連携するには,PECL::OAuthとかでできるんだけど、
それだとサーバにインストールが必要ということで、もっと手軽に使いたいときにはこれ。
https://github.com/abraham/twitteroauth
ここからダンロードして適当な場所に設置してください。
とはいえ、そもそもoauth認証の流れがややこしい。
なので、コメント付きでサンプルプログラムをつくりました。
コンスーマキーなどの取得方法は割愛します。
流れとしては、
1、connect_twitter.phpにアクセス
2、twitter承認画面へ遷移
3、(承認されたら)CALL_BACKのURL(connect_twitter.php)に再度戻る
4、verifier、アクセストークンが確認できたら実際の処理を行うページindex.phpに遷移する。
以上のようなものを仮定しています。
<?php /** * @package * @version 1.0 * @file connect_twitter.php * @url http://d.hatena.ne.jp/go_nash/ */ session_start(); //ライブラリを読み込みます require_once 'twitteroauth/twitteroauth.php'; //CONSUMER_KEY と CONSUMER_SECRET、CALLBACKされるURLを定義しておく require_once 'config.php'; //OAuthトークンがなければ取得する if ( empty($_SESSION['oauth_token']) || empty($_SESSION['oauth_token_secret']) || empty($_REQUEST['oauth_verifier']) ) { /* 1.認証リクエストを行い、仮のトークンを取得する*/ $con = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET); $request_token = $con->getRequestToken(OAUTH_CALLBACK); // 仮のアクセストークンをセットする $_SESSION['oauth_token'] = $token = $request_token['oauth_token']; $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; switch ($con->http_code) { case 200: /* 2. Twitter認証用のURLを取得し、ユーザの承認を得るページに遷移 */ $url = $con->getAuthorizeURL($token); header('Location: ' . $url); break; default: //HTTP ステータスが200でなければエラー echo '接続できませんでした。'; } exit; } /* 3. アクセストークン、トークンシークレット、ユーザ認証済みのパラメータがそろったので、コネクションを作成*/ $con = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); //ユーザが承認した印のverifier を取得して、正式のアクセストークンを取得する $access_token = $con->getAccessToken($_REQUEST['oauth_verifier']); //正式のアクセストークンをセッションにセットする $_SESSION['access_token'] = $access_token; /* 4. アクセストークンが取得できたらセッションにセットし、処理用ページにリダイレクト*/ if (200 == $con->http_code) { /*これは別になくてもよい*/ $_SESSION['status'] = 'verified'; header('Location: ./index.php'); /* HTTPのステータスコードが200でなければ */ } else { /* エラーー*/ header('Location: ./index.php?mode=error'); } ?>
config.phpはこんな内容
<?php define ('TWITTER_CONSUMER_KEY', 'your_consumer_key'); define ('TWITTER_CONSUMER_SECRET', 'your consumer_secret'); define('OAUTH_CALLBACK', 'http://yoursite/connect_twitter.php'); ?>
index.phpはこんな感じ
<?php session_start(); require_once('twitteroauth/twitteroauth.php'); require_once('config.php'); /* アクセストークンがなければconnect_twitter.phpに戻る */ if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) { header('Location: ./connect_twitter.php'); } /* セッションからアクセストークンを取得 */ $access_token = $_SESSION['access_token']; /* 接続用にコネクションオブジェクトを生成 */ $connection = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']); /*あとはTwitterのapiをつかってお好きにどうぞ!*/ $content = $connection->get('trends/weekly'); ちなみに、trendsはローカル都市を指定して取得できるんですが、 現状、weeklyだとか日付指定とか他の条件との複合だと残念ながらデータを取得できないです。 ....