DRYな備忘録

Don't Repeat Yourself.

Twitter API v1.1を利用する箇所が失敗しているので調査・対応ログ

背景

もうかれこれ10年*1開発が続いているChrome拡張*2があり、このCI/CDの結果報告にTwitterAPIを用いている。また、ユーザにとっても、Chrome拡張上でTwitter認証を行い画像付きツイートを行える機能を提供している。

今回、この機能が以下のエラーを吐いて失敗している。どうやら、Twitter API の「アクセスレベル」関係でコケているようだ。

そらそうだ。10年ぐらい前からずっとv1.1だもんなぁお前

Web Store TEST · KanCraft/kanColleWidget@0588aa7 · GitHub

Error: [
  {
    message: 'You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. If you need access to this endpoint, you may need a different access level. You can learn more here: https://developer.twitter.com/en/portal/product',
    code: 453
  }
]

調査

  • 認証は動いている模様。つまり検索などが走りすぎており、止まっているのだと思われる

Chrome拡張内で検索が走る部分のNetworkログ。たしかに失敗している

ビンゴ

問題の整理

  • まず、Twitter API v2 に対応したいのは山々だが、機能を回復させるのが先決
    • v2を利用したところで、上記に言われるように、無課金では動かんだろうし
  • また、Chrome拡張側でTwitterAPIがコケたときに、他の機能も利用できない状態になっているのはけしからん(下記画像参照)

Twitter検索が走り、失敗するとポップアップ画面のレンダリングごとクラッシュしている。
誰だこんな雑な実装したのは

対応

  1. TwitterAPIがコケている状態で、他の機能を心中させないよう修正
  2. Twitter API へ、最低限の課金をしようと思ったが、$100/monthという値段を見てビビった
    • ので、定期的に検索をかけて、どこかにデータを蓄積し、厳密にはリアルタイムではないがこれを配信するように修正したい

修正

(1)

github.com

(2) 別のrepositoryを立てて、GitHub Actionsで4時間おきとかにTwitter検索叩いて、結果をrepositoryにcommitするようにすればよかろう。後日やる

DRYな備忘録として