【PHP】X (twitter) に Post する (w/o Composer)

有名な Twitter OAuth REST API ライブラリーを使って PHP から投稿するというよくあるネタですが、使用するライブラリーの TwitterOAuth が導入に際して Composer を利用となっているところを手作業で貼り付けても大丈夫ですよ~って記事です。

動作に必要な環境

・PHP → ver 8.x
・openSSL
・cURL

たぶん PHP 8.x が動作している環境なら SSL も cURL も
PHP のモジュールとして問題なく入っていると思います。

X (twitter) 側の準備

https://developer.x.com/ にアクセスして アカウントの申請をしてください。 X (twitter) にログイン状態でアクセスすると、そのアカウントでの申請がスムーズに進みます。
初回の Developer Portal アクセスで、既に デフォルトのプロジェクト と アプリ が1つ登録済みになってたと思います。(無かったら新規で APP 作成のボタンがあるはず)


歯車アイコン ⚙️ をクリックして APP の名前などを編集するページに移動。

もしくは APP の上部タブで
Settings / Keys and tokens から選択



APP の名称やアイコンを変えたかったら 【Edit】 のボタンから変更画面へ。

ここでの変更必須のところは
User authentication settings の部分です。

未設定の場合はボタンが 【Setup】 で
設定済みの場合は 【Edit】 となっているはず。




ここでは 設定必須 (required) となっている部分を全て設定してください。

特に Permission の部分は初期状態だと Read のみとなっているので、 Read and Write もしくは Read and Write and DM に設定します。

Type of APP は個人で使うなら Public ではない方の Web App ~にセットします。

App info は独りで使うなら (当該アカウントでしか使わないなら) Callback と Website は適当な URL で問題ありません。 (当該アカウントにはCallbackのアクションなしで認証済みとなるから)


鍵のアイコン 🔑 をクリックして 認証キーを編集するページに移動。

もしくは APP の上部タブで
Settings / Keys and tokens から選択


Consumer Keys (API Key) は APP の新規追加を行うと、その流れで作成画面に遷移するので、そのままでよければ、その内容を使用。まぁ、確認の意味も含めて 【Regenerate】 から再作成するのが確実です。

Authentication Tokens (Access Token) も設定済みのものを利用するのであれば、そのままで。こちらも確認の意味も含めて 【Regenerate】 から再作成するのが確実です。



●全部設定すると計7つのKeyが得られます。
・Consumer API Key
・Consumer API Secret
・Client ID → 当記事では使わない
・Client Secret → 当記事では使わない
・Bearer Token → 当記事では使わない
・Access Token
・Access Token Secret
2025年現在では、Client ID と Client Secret の2つだけでも X (twitter) API を利用できると思われますが、既存で広く使われている Twitter OAuth REST API ライブラリー を利用するので手前味噌な実装はせずに古くからの API の使い方で行います。


正しく設定できていれば、この段階で X (twitter) のアカウント画面の方では、設定 → セキュリティとアカウントアクセス → アプリとセッション の中に、作成した APP が見えていてアクセス権に Read と Write が付いているはずです。 もしもアクセス権が Read しか付いていなかったら、一度 アプリの認証を取り消して、再度 Developer Portal 側で設定を見直してください。


なお Developer Portal 側から Sign out せずに、【Go to X】 を選ぶことで背後で APP の認証が X のアカウントに付与される (ような気がします) Sign out で閉じないように。


PHP 側の準備

Composer を使わないので手作業でライブラリーを先ずはダウンロードします。
X (twitter) oauth ライブラリー
https://github.com/abraham/twitteroauth

ca-bundle (composer に含まれる一部)
https://github.com/composer/ca-bundle

それぞれ github の Releases のページから取得します。
ちなみに当記事で利用したバージョンは
twitteroauth → v7.0.0
ca-bundle → v1.5.7
でした。
ダウンロード後に解凍して以下のように配置します。
/--
  /--[twitter_oauth] - twitteroauthを一式全部
   |
  /--[ca-bundle] - ca-bundleを一式全部
   |
   |--APPのphpファイル
 
単純に APP の PHP と同じ位置にフォルダー丸ごと入れてください。
(具体的なフォルダー名と配置については APP本体のソース参照)


APP 本体

なーんか圧縮して記述すれば10行ぐらいで出来てしまうほど超簡単🤣🤣🤣



X (twitter) API で気になるところ

良いところ

・投稿内容にハッシュタグ文字列があれば自動でハッシュタグとして識別とリンク付けしてくれる
・投稿内容に http:// などの URL と思われる文字列があると自動でリンク付けしてくれる
・投稿内容に http:// などの URL と思われる文字列でリンク先を参照して OGP 出力があると自動で埋め込み作成してくれる

微妙なところ

・投稿内容に TLD (Top Level Domain) と思われる文字を見つけると、http:// などのプロトコル識別がなくても勝手にリンクしてしまう
・タグ文字に隣接して一部の絵文字で制御記号系と被るコード範囲の文字があると失敗する場合があったりする(気がする)

良くないところ


上記画像で示すとおり FREE 版では API 使用回数が極端に少なく、17回 / 24時間 となっていて動作テストですら慎重に行わなければならない。

ちなみに API 使用回数制限でエラーとなった場合は httpcode = 429 が返却されます。

その場合、HttpHeader にて API 使用回数回復が行われる時間を知ることが出来ます。

2025/06/12

Posted by まゆみ.H
X B f B! P L

Search (in blogs)

Featured

今も続くアバターの身長問題。身長=158cmは子供ですか、そーですか。

もともとリアルサイズなアバター故にアジア圏以外が主催のSIMなどでは低身長として扱われることも少なくなかったのですが、さほど気にせず自分の好みの見た目として楽しんでいました。ところが、先日、とあるSIMを訪問した時に「身長が5フィート以下だから子供は帰りなさい」というメッ...

クリエイティブ・コモンズ・ライセンス

template by QooQ