Advanced PHP Twitter library.
Version 3.1.0
- PHP version 5.3.2 or later
- libcurl (Sorry, required version is unknown)
Basic:
- Using GZIP compressed connections
- Automatically decode responses
- Automatically fix weird responses
- Exception handling
- Requests for REST API
- Requests for Streaming API
- Requests using OAuth Echo
- Requests via Proxy
- Multipart requests
Abusing:
- Asynchronous Multiple requests
- Asynchronous Multiple streaming
- Direct OAuth authentication
You can choose one of the following methods.
Click here to save TwistOAuth.phar in your working directory.
Modify require directive in composer.json.
{
"require": {
"mpyw/twistoauth": "@dev"
}
}If you choose this, replace all
require 'TwistOAuth.phar';into
require 'vendor/autoload.php';in examples.
You can manage your API keys in https://apps.twitter.com. Now, let's register your own application.
- Click
Create New App - Fill
NameDescriptionWebSite. - Fill
Callback URL. By default, users are redirected here after successfully authenticating. - Read rules and check
Yes, I agree. - Click
Create your Twitter application.
NOTE: localhost is not available for Callback URL. Use 127.0.0.1 instead.
By default, you can only read tweets but cannot post tweets. You have to configure permission settings.
- Open detail page of your application.
- Click
PermissionsTab. - Select
Read, Write and Access direct messages. - Click
Update settings.
These parameters are identifier for your application.
- Open detail page of your application.
- Click
API KeysTab. - Note
API keyandAPI secret. They mean consumer_key and consumer_secret.
These parameters are identifier for your account.
- Open detail page of your application.
- Click
API KeysTab. - Click
Generate my access token. - Note
Access tokenandAccess token secret.
- How can I learn about Twitter API?
- Aren't there any nice authentication tools for obtaining tokens?
- How to use OAuth 2.0 authentication flow?
- What is
oauth_verifier? - What is
oauth_callback? - How to use
$toin callback closure? - Are all classes immutable?
- Why don't you use namespace?
- Tweets are already escaped... wtf!?
- User description contains unescaped
&... wtf!?
Learn from documentation.
Or watch actual response. The following tool is very very useful.
Try this tool.
I absolutely promise you that I never record your credentials.
But please never use if you cannot trust me even a little.
Sorry, it is not available with this library. Use OAuth 1.0a instead.
It is required for calling the following methods.
TwistOAuth::renewWithAccessToken()TwistOAuth::curlPostAccessToken()
You can get it after user redirecting.
$oauth_verifier = filter_input(INPUT_GET, 'oauth_verifier');It is not required, but you can apply it for calling the following methods.
TwistOAuth::renewWithRequestToken()TwistOAuth::curlPostRequestToken()
There are three value types.
| Name | Example Value | Authentication Type |
|---|---|---|
| Empty String | "" |
PIN or URL (Use default setting) |
| URL | "http://example.com/callback.php" |
URL |
| Out-Of-Band | "oob" |
PIN |
WARNING:
You can only use URL if your application is configured as Browser Application.
This means Callback URL is not empty.
Use use().
$to->streaming('user', function ($status) use ($to) { ... });Now your code is:
try {
$to->post('statuses/update', array('status' => 'test'));
} catch (TwistException $e) { } // This is very lengthy!!!To ignore all responses...
curl_exec($to->curlPost('statuses/update', array('status' => 'test'))); // Wow, coolYes.
$a = new TwistOAuth('CK', 'CS');
$b = $a->renewWithRequestToken();
var_dump($a === $b); // falseHowever, you can change propety values by directly calling __construct().
$obj = new TwistOAuth('a', 'b');
$obj->__construct('c', 'd'); // Break immutable rulesI do not use namespace in TwistOAuth.php.
This is because to give priority to the compatibility with abraham/twitteroauth.
HTML special chars in texts of statuses are already escaped by Twitter like this.
$status->text = htmlspecialchars($status->text, ENT_NOQUOTES, 'UTF-8');WARNING:
The flag is ENT_NOQUOTES, not ENT_QUOTES or ENT_COMPAT.
The following snippet may print broken HTML.
<input type="text" name="text" value="<?=$status->text?>">You should do like this. Do not forget to set 4th parameter into false.
<input type="text" name="text" value="<?=htmlspecialchars(status->text, ENT_QUOTES, 'UTF-8', false)?>">HTML special chars in others are already sanitized by Twitter like this.
$user->name = str_replace(array('<', '>'), '', $user->name);
$user->description = str_replace(array('<', '>'), '', $user->description);WARNING:
& is not replaced into &.
The following snippet may print broken HTML.
name: <?=$user->name?><br>You should do like this.
name: <?=htmlspecialchars($user->name, ENT_QUOTES, 'UTF-8')?><br>