/** * Create a new instance of the adapter by wrapping an existing object. * @param HTTP_OAuth_Consumer $object * @return Imgur_HTTPAdapter_OAuth_HTTPOAuthConsumer **/ public static function createByWrapping($object) { $foo = new Imgur_HTTPAdapter_OAuth_HTTPOAuthConsumer(); $consumer_request = clone $object->getOAuthConsumerRequest(); // Oh, what a mess. $consumer_request->setSecrets($object->getSecrets()); $consumer_request->setParameters(array('oauth_consumer_key' => $object->getKey(), 'oauth_signature_method' => $object->getSignatureMethod(), 'oauth_token' => $object->getToken())); $foo->wrap($consumer_request); return $foo; }
<?php header("Content-type: text/event-stream; charset=utf-8"); header("Transfer-encoding: chunked"); $_TARGET_URL = "https://userstream.twitter.com/2/user.json"; $consumer_key = $consumer_secret = $access_token = $access_token_secret = $time = time(); $oauth_nonce = md5($time . rand()); include_once 'HTTP/OAuth/Consumer.php'; $consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret); //認証用 $signature = HTTP_OAuth_Signature::factory($consumer->getSignatureMethod()); //signature作成用 //HTTPS接続の設定 $http_request = new HTTP_Request2(); $http_request->setConfig('ssl_verify_peer', false); $consumer_request = new HTTP_OAuth_Consumer_Request(); $consumer_request->accept($http_request); $consumer->accept($consumer_request); //Tokenの設定 $consumer->setToken($access_token); $consumer->setTokenSecret($access_token_secret); //signature用の文字列設定 $param = array("oauth_consumer_key" => $consumer_key, "oauth_nonce" => $oauth_nonce, "oauth_signature_method" => $consumer->getSignatureMethod(), "oauth_timestamp" => $time, "oauth_token" => $access_token, "oauth_version" => "1.0"); //sigunature作成 $oauth_signature = urlencode($signature->build("GET", $_TARGET_URL, $param, $consumer_secret, $access_token_secret)); //echo 'Authorization: OAuth oauth_consumer_key="' . $consumer_key .'", oauth_nonce="'. $oauth_nonce .'", oauth_signature="' . $oauth_signature .'", oauth_signature_method="' . $consumer->getSignatureMethod() .'", oauth_timestamp="' . $time .'", oauth_token="' . $access_token .'", oauth_version="1.0"'; //HTTP通信ヘッダの作成 $options = array('http' => array('method' => "GET", 'header' => 'Authorization: OAuth oauth_consumer_key="' . $consumer_key . '", oauth_nonce="' . $oauth_nonce . '", oauth_signature="' . $oauth_signature . '", oauth_signature_method="' . $consumer->getSignatureMethod() . '", oauth_timestamp="' . $time . '", oauth_token="' . $access_token . '", oauth_version="1.0"', "Content-type: application/x-www-form-urlencoded\r\n")); //通信と出力 //JSONに変換可能だったもののみ、出力を行う。 $context = stream_context_create($options);
public function testSetSignatureMethod() { $con = new HTTP_OAuth_Consumer('key', 'secret', 'token'); $con->setSignatureMethod('PLAINTEXT'); $this->assertEquals('PLAINTEXT', $con->getSignatureMethod()); }
<?php header('Content-Type: application/javascript; charset=utf-8'); $_TARGET_URL = "https://api.twitter.com/1/statuses/home_timeline.json"; $consumer_key = 'hTuyvT5xm40IMbufsPDi2A'; $consumer_secret = '93XbloOTOxj3uMon8FxpadnhU04QtXVdfMxgjboWd0'; $access_token = '407672134-47bwS87O46HcwAw2q3TTo4uuDDmnSqGmVP0Iji6d'; $access_token_secret = 'A49YTyG2qJQkvaXtiT16uyOpYLKYlAtepUcp3PVHEw'; $time = time(); $oauth_nonce = md5($time . rand()); $callback = $_GET['callback']; //$time = '1321064592'; //$oauth_nonce = '2117191b637712cd6fe57b8b453c3893'; include_once 'HTTP/OAuth/Consumer.php'; $consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret); //認証用 $signature = HTTP_OAuth_Signature::factory($consumer->getSignatureMethod()); //signature作成用 //HTTPS接続の設定 $http_request = new HTTP_Request2(); $http_request->setConfig('ssl_verify_peer', false); $consumer_request = new HTTP_OAuth_Consumer_Request(); $consumer_request->accept($http_request); $consumer->accept($consumer_request); //Tokenの設定 $consumer->setToken($access_token); $consumer->setTokenSecret($access_token_secret); $page = '1'; $response = $consumer->sendRequest($_TARGET_URL, array('page' => $page, "include_entities" => true), "GET"); $json = json_decode($response->getBody(), true); echo $callback . "(" . json_encode($json) . ")";