twitteroauthの使い方(php)

phptwitterと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に遷移する。

以上のようなものを仮定しています。

connect_twitter_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だとか日付指定とか他の条件との複合だと残念ながらデータを取得できないです。

....