m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

TwitterAPIでStremingAPIを使用してつぶやきをリストで抽出

StremingAPI

なんかつぶやきをリアルタイムで取得する機能とのこと

ずらずらーと流れてくるのでなんかDBに格納して分析にするのかな…

やり方

開発者サイトへ移動して取得

https://dev.twitter.com/へ移動して開発者のキーを取得する

APIを作成

APIを作成して認証に使用する

ソース
<?php
$consumer_key = 'Application settingsのAPI key';
$consumer_secret = 'Application settingsのAPI secret';
$oauth_token = 'Your access tokenのAccess token';
$oauth_token_secret = 'Your access tokenのAccess token secret';
//$url = 'https://userstream.twitter.com/1.1/user.json';
$url = 'https://stream.twitter.com/1.1/statuses/sample.json';

$method = 'GET';

// パラメータ
$oauth_parameters = array(
    'oauth_consumer_key' => $consumer_key,
    'oauth_nonce' => microtime(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_timestamp' => time(),
    'oauth_token' => $oauth_token,
    'oauth_version' => '1.0',
);

// 署名を作る
$a = $oauth_parameters;
ksort($a);
$base_string = implode('&', array(
    rawurlencode($method),
    rawurlencode($url),
    rawurlencode(http_build_query($a, '', '&', PHP_QUERY_RFC3986))
));
$key = implode('&', array(rawurlencode($consumer_secret), rawurlencode($oauth_token_secret)));
$oauth_parameters['oauth_signature'] = base64_encode(hash_hmac('sha1', $base_string, $key, true));


// 接続&データ取得
// $fp = fsockopen("ssl://userstream.twitter.com", 443);
$fp = fsockopen("ssl://stream.twitter.com", 443);

if ($fp) {
    fwrite($fp, "GET " . $url . " HTTP/1.1\r\n"
//                . "Host: userstream.twitter.com\r\n"
                . "Host: stream.twitter.com\r\n"
                . 'Authorization: OAuth ' . http_build_query($oauth_parameters, '', ',', PHP_QUERY_RFC3986) . "\r\n"
                . "\r\n");
    while (!feof($fp)) {
        $res = fgets($fp);
        $res = json_decode($res, true);
        //表示
        print_r($res);
    }
    fclose($fp);
}
結果

f:id:m_shige1979:20140409222924j:plain