at backyard

Color my life with the chaos of trouble.

Twitter API v2を用いてツイートするためのCLIプログラムをNode.jsで書いた

下記の記事でTwitter API v2を用いてツイートをするプログラムを書いてみた。

shinshin86.hateblo.jp

上の記事の中では既存のサンプルを参考にしつつ、結構色々と試行錯誤しながらサンプルコードを書いていたので、もう少し頭の中を整理したいと思い、CLI上で完結するシンプルなツイートのためのプログラム(Node.js - ESM)を書いた。

実際に動く状態のコードは下記にある。

github.com

利用する際は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ツールなどでも実装の中でこれが使われているので、たぶんこういう系のパッケージではデファクトスタンダードになっているのかなと思う。
リポジトリを見る限り、今現在も更新されているようだった。)

github.com

このツールを使えばよいのだが今回依存パッケージ使わない縛りを課していたので、WindowsLinux部分の際は自分で吸収した。
...つもりだが、テストを行ったのはmacだけなので上手く動かない可能性もある。
気が向いたら他の環境でもテストしてみようと思う。 (参考にするために open 内部のソースコードも読んでみたが、 spawn に渡す際にオプションに色々と渡していそうだったので、動かないかも...)

OAuth2の認証について

Twitter API v2でツイートを行う際、OAuth2の認証を挟む必要がある。

以前書いたサンプルでは express を利用していたが、今回は http.createServer でcallback用のサーバを立ち上げることにした。
プログラムを実行すると認証用のURLが発行され、それで規定のブラウザが自動的に起動される。
認証が成功すれば有効なcodeがcallbackのパスに渡されるので、あとはそちらを用いて処理をすすめる。

CLI上でpromptを出す

認証処理が成功すると、CLI上でツイートを行うためのプロンプトが表示される。

あとはそちらに呟きたい内容を入力してEnterを押せば、ツイートされる。

スクショ自体はこのプログラムを作るために試行錯誤していた時期のやつだが、見た目はこんな感じ

まあ、そんなわけで意図したプログラムが作れて満足。

このブログを書きながらフジロック配信の折坂悠太(重奏) を聴いている。
友達が教えてくれて今回はじめて聴いているのだが、とても良いですね〜