(2023年6月17日)Twitter API v2対応
サンプル・プログラムの実行例
サンプル・プログラム
putTwitter.php | サンプル・プログラム本体 |
pahooTwitterAPI.php | Twitter APIに関わるクラス pahooTwitterAPI。 使い方は「PHPでTwitterに投稿(ツイート)する」などを参照。include_path が通ったディレクトリに配置すること。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
5.0.0 | 2023/07/02 | Twitter API v2対応 |
4.1 | 2022/01/04 | PHP8対応,リファラ・チェック改良 |
4.0 | 2016/02/11 | pahooTwitterAPIクラスを分離 |
3.1 | 2014/01/19 | https対応 |
3.0 | 2013/07/21 | API 1.1対応 |
バージョン | 更新日 | 内容 |
---|---|---|
5.2.0 | 2023/07/17 | oembed() v2対応 |
5.1.0 | 2023/07/16 | extractMediaURL() -- file:///形式に対応 |
5.0.0 | 2023/07/02 | メソッドをTwitter API v2へ移行;v1.1は別名or廃止 |
4.9.0 | 2023/04/15 | tweet3() 追加 |
4.8.0 | 2023/01/28 | tweet2(),twitter_strcut2(),extractMediaURL()追加 |
バージョン | 更新日 | 内容 |
---|---|---|
1.3.0 | 2023/07/11 | roundFloat() 追加 |
1.2.0 | 2023/04/22 | exitIfLessVersion() 追加 |
1.1.2 | 2023/02/05 | validString() 修正 |
1.11 | 2022/07/03 | isCommandLine() 修正 |
1.1 | 2022/06/04 | getValidString() 修正 |
準備:pahooTwitterAPI クラス
11: //TwitterOAuth クラスをロードする.
12: $version = explode('.', phpversion());
13: if ($version[0] >= 8) {
14: require __DIR__ . '/vendor/autoload.php';
15: }
16: use Abraham\TwitterOAuth\TwitterOAuth;
17:
27: //OAuth用パラメータ
28: // https://apps.twitter.com/
29: var $TWTR_CONSUMER_KEY = '***************'; //Cunsumer key
30: var $TWTR_CONSUMER_SECRET = '***************'; //Consumer secret
31: var $TWTR_ACCESS_KEY = '***************'; //Access Token (oauth_token)
32: var $TWTR_ACCESS_SECRET = '***************'; //Access Token Secret (oauth_token_secret)
33:
事前にプログラムを登録しておく必要があり、その方法は「Twitter API - WebAPIの登録方法」を参照されたい。入手したパラメータを、上述の変数に代入しておくこと。
PHP の https対応
関数 phpinfo を使って、下図のように表示されればOK。
Windowsでは、phop.iniの下記の行を有効化する。
extension=php_openssl.dll
Linuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
Twitter API:POST /2/tweets
URL |
---|
https://api.twitter.com/2/tweets |
フィールド名 | 要否 | 内 容 | |
---|---|---|---|
text | 必須 | 投稿文。UTF-8でエンコードされたテキストで、140文字以下。 |
解説:ツイート
467: /**
468: * メッセージをツイートする.
469: * Tweetet API v2 を使用する.
470: * @param string $message 投稿メッセージ(UTF-8限定)
471: * @return bool TRUE:ツイート成功/FALSE:失敗
472: */
473: function tweet($message) {
474: //メッセージをツイートする.
475: $option = [
476: 'text' => $message
477: ];
478: $status = $this->connection->post('tweets', $option, TRUE);
479: $this->webapi = 'https://api.twitter.com/2/tweets';
480:
481: //処理に成功した.
482: if ($this->isSuccess()) {
483: $this->responses = $status->data;
484: $this->errcode = NULL;
485: $this->errmsg = '';
486: $this->error = FALSE;
487: $res = TRUE;
488: //処理に失敗した.
489: } else {
490: if ($this->isAuthError() == FALSE) {
491: $this->errmsg = $status->detail;
492: $this->error = TRUE;
493: }
494: $res = FALSE;
495: }
496: return $res;
497: }
解説:メイン・プログラム
187: //ツイート実行
188: if ($msg != '') {
189: $msg = htmlspecialchars($msg);
190: if ($ptw->twitter_strlen($msg) <= 140) {
191: $res = $ptw->setting();
192: if ($res) {
193: $screen_name = (string)$ptw->responses->screen_name;
194: $res = $ptw->tweet($msg);
195: }
196: if ($res == FALSE) {
197: $outmsg = '<p style="color:red;">投稿失敗:' . $ptw->errmsg . '</p>';
198: } else {
199: $id_str = $ptw->responses->id;
200: $url = 'https://twitter.com/' . $screen_name . '/status/' . $id_str;
201: $outmsg = '<p style="color:blue;">投稿成功:<a href="' . $url . '">' . $url . '</a></p>';
202: }
203: } else {
204: $outmsg = '<p style="text:red;">メッセージを 140 文字以下にしてください.</p>';
205: }
206: }
207:
一度に投稿できるツイートは、半角でも全角でも140文字以下なので、入力文字数のチェックをしておく。
ユーザー関数 twitter_strlen は、英数字も日本語も1文字としてカウントするが、URLのみ23文字としてカウントするTwitter仕様である。140文字を超えた場合にはツイートしない。
tweet を実行した後、戻り値を解析し、成功した場合には投稿メッセージへのリンクを表示する。
Twitterへの再登録が必要な場合も
プログラムのバージョンアップで正常に動作しない場合は、Twitterへ新規登録してみるといいだろう。
質疑応答
とっさん様【回答】
Twitterへの投稿プログラムを使ってみようと思ったのですが、
putTwitter.phpを実行すると、次のファイルがないので動きません
require_once('pahooInputData.php');
このファイルはどこからダウンロードできますか?
配布ファイルから漏れており、失礼しました。【質問】
"pahooInputData.php" を追加した配布ファイルをアップロードしました。お手数ですが、再ダウンロードをお願いします。
とっさん様【回答】
"pahooInputData.php" を追加した配布ファイルはどこからダウンロードできますか?
本ページの上の方にある「ダウンロード」ボタンをクリックして、再ダウンロードをお願いします。
参考サイト
- Twitter Developer Platform Documentation:公式サイト
- PHPでTwitterに投稿する:ぱふぅ家のホームページ
- PHPでTwitterに画像付きメッセージ投稿:ぱふぅ家のホームページ
- >PHPでツイートの埋め込み用HTMLを取得:ぱふぅ家のホームページ
Twitter社がイーロン・マスク氏に買収され、API有料化などの情報が流れたが、2023年(令和5年)6月現在、24時間に50ツイートまで、アプリケーションは1つまでなどの条件付きで、freeプラン(無料)が利用できる。Twitter API v2 のみ利用できるが、v2へ移行していない機能については Twitter API v1.1 を併用していく形になっている。