TwitterAPIを使って検索してみます。
- カスターマキー、アクセストークン等を取得してください。参考
- 受け取る値はjson形式なので「Jsphonをcodereposにアップロードしました。」を参考にしてJsphonをインストール。
- HTTP::Requestもpearでインストール
<?php
require_once("HTTP/Request.php");
require_once("Jsphon/Decoder.php");
//URLエンコード RFC3986版
function _rawurlencode($str)
{
$str = rawurlencode($str);
$str = str_replace('+', ' ', $str);
$str = str_replace('%7E', '~', $str);
return $str;
}
//hash_hmac('sha1', $data, $key, true)の代わり
function _hmacsha1($key, $data)
{
$blocksize = 64;
$hashfunc = 'sha1';
if (strlen($key) > $blocksize) $key = pack('H*', $hashfunc($key));
$key = str_pad($key, $blocksize, chr(0x00));
$ipad = str_repeat(chr(0x36), $blocksize);
$opad = str_repeat(chr(0x5c), $blocksize);
$hmac = pack('H*', $hashfunc(($key^$opad). pack('H*', $hashfunc(($key^$ipad). $data))));
return $hmac;
}
//投げる変数類設定
$request_param = array(
//〜search.json?q=検索語
'q' => 検索語,
'oauth_consumer_key' => カスタマーキー,
'oauth_nonce' => md5(uniqid(mt_rand(), TRUE)),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_token' => アクセストークン,
'oauth_timestamp' => time(),
'oauth_version'=> '1.0',
);
//変数名でソート
$request_sorted = $request_param;
ksort($request_sorted);
//Sigunatureのベーステキストを作成
$request_queries = array();
foreach ($request_sorted as $k => $v) $request_queries[] = $k. '='._rawurlencode($v);
$request_query = implode('&', $request_queries);
//それぞれをURLエンコードして接続 この場合GET
$twtr_signature_base = "GET&";
$twtr_signature_base .= _rawurlencode($request_uri). '&';
$twtr_signature_base .= _rawurlencode($request_query);
//Signatureの作成
$twtr_keys = _rawurlencode(カスタマーシークレット). '&'. _rawurlencode(アクセスシークレット);
$request_param['oauth_signature'] =base64_encode(_hmacsha1($twtr_keys,$twtr_signature_base));
//HTTPヘッダーに追加するAuthorizationパラメータ作成
$request_headers = array();
foreach ($request_param as $k => $v) $request_headers[] = $k. '="'._rawurlencode($v). '"';
unset($request_headers[0]); //最初に定義したパラメータリストからqのみ撤去
$request_header = 'OAuth realm="'. $request_domain. '", '. implode(', ', $request_headers);
$url = 'http://search.twitter.com/search.json';
$request = &new HTTP_Request($url);
$request->setMethod(HTTP_REQUEST_METHOD_GET);
$request->addHeader('Authorization', $request_header);
$request->addQueryString("q", 検索語) ;
$request->sendRequest();
$json = new Jsphon_Decoder();
$respo = $json->decode($request->getResponseBody());