LoginSignup
0
1

More than 5 years have passed since last update.

TwistOAuthれどめ勝手に日本語化(Jul 02, 2014)

Last updated at Posted at 2014-03-29

TwistOAuth - github
気の向くままに訳しているので真実が知りたい方は公式をみてください
2.1になってREADME全面改訂!!!!この記事は全く参考になりません!!!!!!!!!!!!!!!!

TwistOAuth

Rest APIとかStreaming APIとかが使えるすごいライブラリです.

Download

圧縮版

  1. Download ZIP Archive.
  2. build の中の TwistOAuth.php を持ってこよう.
  3. コードに require_once を使って入れてね.
  4. 楽しい!
こんな感じ
require_once __DIR__ . '/TwistOAuth.php';

Raw Files

  1. Download ZIP Archive.
  2. Take all files in the directory src.
  3. Write some code that autoloads them with spl_autoload_register.
  4. 楽しい!
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

TwistCredentialTwistRequestTwistIterator のためのラッパーです.
これは、 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 getAutoGET リクエストのために使います.
  • post postAuto sendPOST リクエストのために使います.
  • 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    ()

サンプル

基本的な使い方

TL表示するぜ
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);
}
0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1