TwistOAuth - github
気の向くままに訳しているので真実が知りたい方は公式をみてください
2.1になってREADME全面改訂!!!!この記事は全く参考になりません!!!!!!!!!!!!!!!!
TwistOAuth
Rest APIとかStreaming APIとかが使えるすごいライブラリです.
Download
圧縮版
- Download ZIP Archive.
-
build
の中の TwistOAuth.php を持ってこよう. - コードに require_once を使って入れてね.
- 楽しい!
require_once __DIR__ . '/TwistOAuth.php';
Raw Files
- Download ZIP Archive.
- Take all files in the directory
src
. - Write some code that autoloads them with spl_autoload_register.
- 楽しい!
spl_autoload_register(function ($name) {
$path = __DIR__ . '/' . $name . '.php';
if (is_file($path)) {
require $path;
}
});
他のライブラリとの比較
でかい表があります
クラスの概要
TwistException
class TwistExcepton extends RuntimeException
Error on Twitter を扱います.
TwistBase
abstract class TwistBase
Provide static filtering method for child classes.
TwistUnserializable
abstract class TwistUnserializable extends TwistBase
Protect instances from invalid serializing.
TwistCredential
class TwistCredential extends TwistBase
This instance holds identity.
TwistRequest
class TwistRequest extends TwistBase
This instance holds request model.
For actually executing, use TwistExecuter
instance.
TwistExecuter
class TwistExecuter extends TwistUnserializable
単体又は複数のリクエストを 非同期的に 実行します.
TwistIterator
class TwistCredential extends TwistExecuter implements Iterator
Implemented Iterator
on TwistExecuter
.
TwistOAuth
class TwistOAuth extends TwistBase
TwistCredential
と TwistRequest
と TwistIterator
のためのラッパーです.
これは、 API limitの無効化 もします.
クラスの詳細
重要なクラス,プロパティ,メソッドについてだけ記述します.
TwistException
final public string getMessage()
Return error message.
final public int getCode()
Return HTTP Status Code.
final public mixed getRequest()
Return TwistRequest
instance on which an error occurred.
In the case of error on stream_select()
, the return value will be null.
final public string __toString()
Return string according to the following format.
return sprintf('[%d] %s', $this->getCode(), $this->getMessage());
TwistCredential
Properties
- User Agent
private readonly string $userAgent = 'TwistOAuth';
- OAuth Consumer
private readonly string $consumerKey = '';
private readonly string $consumerSecret = '';
- OAuth Tokens and Verifier
private readonly string $requestToken = '';
private readonly string $requestTokenSecret = '';
private readonly string $accessToken = '';
private readonly string $accessTokenSecret = '';
private readonly string $verifier = '';
- User Information
private readonly string $userId = '';
private readonly string $screenName = '';
- Parameters for Para-xAuth authorization
Para-xAuth認証をするときに使う.
private readonly string $screenName = '';
private readonly string $password = '';
final public __construct()
コンストラクタです(オブジェクト生成時に呼び出される関数).
new TwistCredential(
string $consumerKey = '', // Required.
string $consumerSecret = '', // Required.
string $accessToken = '', // Required unless authorize or authenticate later.
string $accessTokenSecret = '', // Required unless authorize or authenticate later.
string $screenName = '', // Required if Para-xAuth authorize later.
string $password = '' // Required if Para-xAuth authorize later.
)
final public string __toString()
よくわかんないけど一応マニュアルPHP: Exception::__toString - Manual
Return string according to the following format.
$string = '';
if ($this->screenName !== '') {
$string .= "@{$this->screenName}";
}
if ($this->userId !== '') {
$string .= "(#{$this->userId})";
}
return $string;
final public $this
setUserAgent()
final public $this
setConsumer()
final public $this
setRequestToken()
final public $this
setAccessToken()
final public $this
setUserId()
final public $this
setScreenName()
final public $this
setPassword()
final public $this
setVerifier()
Setter for properties.
$TwistCredential
->setUserAgent (string $userAgent = '')
->setConsumer (string $consumerKey = '', string $consumerSecret = '')
->setRequestToken (string $requestToken = '', string $requestTokenSecret = '')
->setAccessToken (string $accessToken = '', string $accessTokenSecret = '')
->setUserId (string $userId = '')
->setScreenName (string $screenName = '')
->setPassword (string $password = '')
->setVerifier (string $verifier = '')
final public string getAuthenticateUrl()
final public string getAuthorizeUrl()
Return URL for authentication or authorization.
(string) $TwistCredential->getAuthenticateUrl (bool $force_login = false)
(string) $TwistCredential->getAuthorizeUrl (bool $force_login = false)
Note: What is the difference between Authenticate and Authorize ?
Authenticate | Authorize | |
---|---|---|
New User, Authed User on force_login | Jump to Twitter | Jump to Twitter |
Authed User | Jump to Twitter, however, if you set your application Allow this application to be used to Sign in with Twitter, quickly jump back to your callback URL. | Jump to Twitter |
TwistRequest
This class has a private constructor.
Use static factory methods instead.
Properties
private readonly string $host; // e.g. "api.twitter.com"
private readonly string $endpoint; // e.g. "/1.1/statuses/update.json"
private readonly string $method; // e.g. "POST"
private readonly TwistCredential $credential;
private readonly mixed $response; // Response object is set here
final public static TwistRequest get()
final public static TwistRequest getAuto()
final public static TwistRequest post()
final public static TwistRequest postAuto()
final public static TwistRequest send()
指定されたリクエストのためのインスタンスTwistRequest
を作ります.
$params
と $credential
は後で変えることができます.
-
get
getAuto
は GET リクエストのために使います. -
post
postAuto
send
は POST リクエストのために使います. -
getAuto
postAuto
は,自動的にTwistException
を投げます. -
send
は,レスポンスを待ちません.
(TwistRequest) TwistRequest::get (string $endpoint, mixed $params = array(), TwistCredential $credential = null)
(TwistRequest) TwistRequest::getAuto (string $endpoint, mixed $params = array(), TwistCredential $credential = null)
(TwistRequest) TwistRequest::post (string $endpoint, mixed $params = array(), TwistCredential $credential = null)
(TwistRequest) TwistRequest::postAuto (string $endpoint, mixed $params = array(), TwistCredential $credential = null)
(TwistRequest) TwistRequest::send (string $endpoint, mixed $params = array(), TwistCredential $credential = null)
例
下の同じグループの例はそれぞれ同じ意味になります.
$TwistRequest = TwistRequest::getAuto('users/show');
$TwistRequest = TwistRequest::getAuto('users/show.json');
$TwistRequest = TwistRequest::getAuto('users/show.json?');
$TwistRequest = TwistRequest::getAuto('users/show?');
$TwistRequest = TwistRequest::getAuto('/users/show');
$TwistRequest = TwistRequest::getAuto('1.1/users/show');
$TwistRequest = TwistRequest::getAuto('/1.1/users/show');
$TwistRequest = TwistRequest::getAuto('https://api.twitter.com/1.1/users/show.json');
$TwistRequest = TwistRequest::getAuto('users/show', array('id' => '12345'));
$TwistRequest = TwistRequest::getAuto('users/show', 'id=12345'); // WITHOUT URL ENCODED!!
$TwistRequest = TwistRequest::postAuto('account/update_profile_image', array(
'@image' => 'test.png',
));
$TwistRequest = TwistRequest::postAuto('account/update_profile_image', '@image=test.png');
$TwistRequest = TwistRequest::postAuto('account/update_profile_image', array(
'image' => base64_encode(file_get_contents('test.png')), // BASE64 ENCODED!!
));
$TwistRequest = TwistRequest::postAuto('statuses/update_with_media', array(
'@media[]' => 'test.png',
'status' => 'TEST',
));
$TwistRequest = TwistRequest::postAuto('statuses/update_with_media',
'@media[]=test.png&status=TEST',
);
$TwistRequest = TwistRequest::postAuto('statuses/update_with_media', array(
'media[]' => file_get_contents('test.png'), // WITHOUT BASE64 ENCODED!!
'status' => 'TEST',
));
final public static TwistRequest login()
Provide a model for Para-xAuth authorization.
(TwistRequest) TwistRequest::login(TwistCredential $credential)
final public $this
setParams()
final public $this
setCredential()
Setter for properties.
Exceptionally, the instances created by TwistRequest::login()
cannot be applied.
$TwistRequest
->setParams (mixed $params = array())
->setCredential (mixed $credential = null)
final public mixed execute()
(mixed) $TwistRequest->execute()
Execute request internally using TwistIterator
and return response.
Return Value Types
Methods | Value |
---|---|
get |
stdClass or array or TwistException
|
post |
stdClass or array or TwistException
|
getAuto |
stdClass or array (TwistException is automatically thrown) |
postAuto |
stdClass or array (TwistException is automatically thrown) |
send | null |
login |
stdClass (TwistException is automatically thrown) |
Examples
try {
$statuses = TwistRequest::getAuto('statuses/home_timeline', '', $credential)->execute();
foreach ($statuses as $status) {
echo "<p>@{$status->screen_name}: {$status->text}<p>\n";
}
} catch (TwistException $e) {
echo $e . "\n";
}
$statuses = TwistRequest::get('statuses/home_timeline', '', $credential)->execute();
if ($statuses instanceof TwistException) {
die($statuses . "\n");
}
foreach ($statuses as $status) {
echo "<p>@{$status->screen_name}: {$status->text}<p>\n";
}
TwistIterator
Manually use this instance insteadof $TwistRequest->execute()
for Multiple Requests or Streaming Requests.
final public __construct()
new TwistIterator(TwistRequest $request1, TwistRequest $request2, ...)
new TwistIterator(array<TwistRequest> $requests)
final public $this
setInterval()
Set interval function called while looping foreach
block.
$TwistIterator->setInterval(callable $callback, float $interval = 0, array $args = array())
final public $this
runAll()
Execute all requests internally using TwistIterator
.
$TwistRequest->runAll()
Examples
Multiple REST requests
$TwistRequests = array(
TwistRequest::send('statuses/update', 'status=@BarackObama FOO!!', $credential),
TwistRequest::send('statuses/update', 'status=@BarackObama BAR!!', $credential),
TwistRequest::send('statuses/update', 'status=@BarackObama BAZ!!', $credential),
);
$ex = new TwistExecuter($TwistRequests);
$ex->runAll();
$TwistRequests = array(
TwistRequest::send('statuses/update', 'status=@BarackObama FOO!!', $credential),
TwistRequest::send('statuses/update', 'status=@BarackObama BAR!!', $credential),
TwistRequest::send('statuses/update', 'status=@BarackObama BAZ!!', $credential),
);
$it = new TwistIterator($TwistRequests);
$it->runAll();
Single streaming request
set_time_limit(0);
try {
$TwistRequest = TwistRequest::getAuto('user', '', $credential);
foreach (new TwistIterator($TwistRequest) as $TwistRequest) {
var_dump($TwistRequest->response);
}
} catch (TwistException $e) {
var_dump((string)$e);
}
Multiple streaming requests
set_time_limit(0);
try {
$TwistRequests = array(
TwistRequest::getAuto('user', '', $credential),
TwistRequest::getAuto('statuses/sample', '', $credential),
TwistRequest::postAuto('statuses/filter', 'track=youtube', $credential),
);
foreach (new TwistIterator($TwistRequests) as $TwistRequest) {
var_dump($TwistRequest->response);
}
} catch (TwistException $e) {
var_dump((string)$e);
}
TwistOAuth
シングルRESTリクエスト がしたい人はこれを使おう.
POSTリクエストの時は、メインの認証だけ使われるけど、GETの時は、サブ認証も使わます.規制回避します.
final public __construct()
new TwistOAuth(TwistCredential $credential)
final public $this
setSub()
Register or unregister sub TwistCredential instances.
$TwistOAuth->setSub(TwistCredential $credential1, TwistCredential $credential2, ...)
$TwistOAuth->setSub(array<TwistCredential> $credentials)
$TwistOAuth->setSub()
final public mixed get()
final public mixed getAuto()
final public mixed post()
final public mixed postAuto()
final public void send()
final public stdClass login()
(mixed) $TwistOAuth->get (string $endpoint, mixed $params = array())
(mixed) $TwistOAuth->getAuto (string $endpoint, mixed $params = array())
(mixed) $TwistOAuth->post (string $endpoint, mixed $params = array())
(mixed) $TwistOAuth->postAuto (string $endpoint, mixed $params = array())
(null) $TwistOAuth->send (string $endpoint, mixed $params = array())
(stdClass) $TwistOAuth->login ()
サンプル
基本的な使い方
try {
$TwistOAuth = new TwistOAuth($credential);
foreach ($TwistOAuth->getAuto('statuses/home_timeline') as $status) {
var_dump($status);
}
$TwistOAuth->postAuto('statuses/update', array('status' => 'test'));
} catch (TwistException $e) {
var_dump((string)$e);
}
API規制回避
try {
$TwistOAuth = new TwistOAuth($mainCredential);
$TwistOAuth->setSub($subCredential1, $subCredential2);
$TwistOAuth->getAuto('statuses/home_timeline');
$TwistOAuth->getAuto('statuses/home_timeline');
$TwistOAuth->getAuto('statuses/home_timeline');
$TwistOAuth->getAuto('statuses/home_timeline');
$TwistOAuth->getAuto('statuses/home_timeline');
$TwistOAuth->getAuto('statuses/home_timeline');
$TwistOAuth->getAuto('statuses/home_timeline');
...
} catch (TwistException $e) {
var_dump((string)$e);
}