twitterAPIはZend_Service_Twitterで簡単に利用することができる。
流れとしては、
- http://twitter.com/oauth_clients/で登録して、認証用のキーを取得
- Oauthでtwitterに接続し、リクエスト用のトークンを取得し、セッションに入れる。
- リダイレクト
- コールバック先でGETとセッションを使いアクセス用のトークンを取得
- Zend_Service_TwitterでtwitterのAPIを利用する。
$twitter = new Zend_Service_Twitter('ユーザーID', 'パスワード');
$friends = $twitter->user->friends(); //フォローしているユーザー情報を取得
■twitterAction
$configuration = array(
'siteUrl' => 'http://twitter.com/oauth',
'callbackUrl' => 'http://test.com/index/test/',
'consumerKey' => 'twitterのサイトで取得',
'consumerSecret' => 'twitterのサイトで取得',
'authorizeUrl' => 'http://twitter.com/oauth/authenticate'
//'authorizeUrl' => 'http://twitter.com/oauth/authorize'
);
$consumer = new Zend_Oauth_Consumer($configuration);
$token = $consumer->getRequestToken();
session_start();
$_SESSION['TWITTER_REQUEST_TOKEN'] = serialize($token);
$consumer->redirect();リダイレクト先に飛ばす。
■testAction
session_start();
$configuration = array(
'siteUrl' => 'http://twitter.com/oauth',
'callbackUrl' => 'http://test.com/index/test/',
'consumerKey' => 'twitterのサイトで取得',
'consumerSecret' => 'twitterのサイトで取得',
'authorizeUrl' => 'http://twitter.com/oauth/authenticate'
//'authorizeUrl' => 'http://twitter.com/oauth/authorize'
);
$consumer = new Zend_Oauth_Consumer($configuration);
if (!empty($_GET) && isset($_SESSION['TWITTER_REQUEST_TOKEN'])) {
$token = $consumer->getAccessToken($_GET, unserialize($_SESSION['TWITTER_REQUEST_TOKEN']));
$_SESSION['TWITTER_ACCESS_TOKEN'] = serialize($token);
$_SESSION['TWITTER_REQUEST_TOKEN'] = null;
$twitter = new Zend_Service_Twitter(array(
'username' => 'fctokyofuns',
'accessToken' => $token
)
);
$friends = $twitter->userFollowers();
今のところ英語しかないけど、「->関数->値」とすれば、だいたい使えるようになっているので、メソッドを探して使って、戻り値がある場合は、オブジェクトにアクセスしていけば問題なく値を得ることができる。
フォローしているユーザーの最新の投稿とユーザーへのリンク・アイコンを一覧形式で表示するのに使った。
そのほかの方法
botなどあらかじめAccess Token Secretを取得する方法しておいてtwitterAPIを利用する方法。
- http://twitter.com/appsでbot用のアプリケーション登録を行う。
- http://dev.twitter.com/apps/で1で作ったアプリケーションを選択する。
- My Access TokenでAccess TokenとAccess Token Secretを取得する。
$accessToken = ''; // Access Token
$accessTokenSecret = ''; // Access Token Secret
$token = new Zend_Oauth_Token_Access();
$token->setToken($accessToken);
$token->setTokenSecret($accessTokenSecret);
$config = array(
'consumerKey' => ', // Consumer key
'consumerSecret' => '', // Consumer secret,
'accessToken' => $token
);
$twitter = new Zend_Service_Twitter($config);
//$friends = $twitter->userFollowers();
$response = $twitter->status->update("テスト");
この方法だとリダイレクトなどなしで実行できるのですごく簡単にできる。
1 Trackback or Pingback