/**
  * 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);
Beispiel #3
0
 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) . ")";