Twitter API v2を用いてツイートするためのCLIプログラムをNode.jsで書いた
下記の記事でTwitter API v2を用いてツイートをするプログラムを書いてみた。
上の記事の中では既存のサンプルを参考にしつつ、結構色々と試行錯誤しながらサンプルコードを書いていたので、もう少し頭の中を整理したいと思い、CLI上で完結するシンプルなツイートのためのプログラム(Node.js - ESM)を書いた。
実際に動く状態のコードは下記にある。
利用する際はTwitter APIの利用申請を行い、CLIENT_IDを取得しておく必要がある。
またCallback URLは下記のように http://127.0.0.1:3000/callback
を設定しておく必要もある。
今回は上のコードを書くにあたって、意識したことをメモがてら書いておく。
なお、そこまで技術解説するとかではなく、実装時の脳内をだらだらと垂れ流しているようなニュアンスに近い。
外部パッケージは twitter-api-sdk しか利用しないことにした
今回実装するにあたって、twitter-api-sdk
以外の外部パッケージは利用しないようにした。
単純にシンプルな実装にすることで頭の中を整理したかったからだ。
後述するが、OAuth2の認証を挟むためブラウザ上で認証を行う必要がある。
その際にPCの規定のブラウザが立ち上げり、Twitterの認証ページにアクセスする。
Node.jsで書く場合、open
というnpmパッケージがあるが、これはクロスプラットフォーム間での差異をいい感じに吸収してくれるツールとなっている。
あまり私は詳しくはないが、HerokuのCLIツールなどでも実装の中でこれが使われているので、たぶんこういう系のパッケージではデファクトスタンダードになっているのかなと思う。
(リポジトリを見る限り、今現在も更新されているようだった。)
このツールを使えばよいのだが今回依存パッケージ使わない縛りを課していたので、WindowsとLinux部分の際は自分で吸収した。
...つもりだが、テストを行ったのはmacだけなので上手く動かない可能性もある。
気が向いたら他の環境でもテストしてみようと思う。
(参考にするために open
内部のソースコードも読んでみたが、 spawn
に渡す際にオプションに色々と渡していそうだったので、動かないかも...)
OAuth2の認証について
Twitter API v2でツイートを行う際、OAuth2の認証を挟む必要がある。
以前書いたサンプルでは express
を利用していたが、今回は http.createServer
でcallback用のサーバを立ち上げることにした。
プログラムを実行すると認証用のURLが発行され、それで規定のブラウザが自動的に起動される。
認証が成功すれば有効なcodeがcallbackのパスに渡されるので、あとはそちらを用いて処理をすすめる。
CLI上でpromptを出す
認証処理が成功すると、CLI上でツイートを行うためのプロンプトが表示される。
あとはそちらに呟きたい内容を入力してEnterを押せば、ツイートされる。
まあ、そんなわけで意図したプログラムが作れて満足。
このブログを書きながらフジロック配信の折坂悠太(重奏)
を聴いている。
友達が教えてくれて今回はじめて聴いているのだが、とても良いですね〜