環境対応 #543
完了一部APIで認証時に常にエラーが発生する
0%
説明
- /lists/members
- /accounts/verify_credentials
HTTPステータスコード401(Not Authorized)で、次のようなエラーが返ってくる。
{"errors":[{"code":53,"message":"Basic authentication is not supported"}]}
まだ検証は不十分だがTwitterサイドの不具合である可能性が高い。また、verify_credentialsが必ずエラーを返してくるため、単にコード53のエラーを無視したのではキャッシュが消えたらmikutterが起動できなくなる。
toshi_a 初音 さんが約12年前に更新
こちらのパラメータの渡し方が何かまずかったのが、Twitter側のエラーチェックの方法が変更されて弾かれるようになったのだろう(他のTwitterクライアントでは発生していない)。
場合によってはAPI 1.1に移行して対応する。
toshi_a 初音 さんが約12年前に更新
https://dev.twitter.com/discussions/13097
ここで議論されている問題と同じ。 users/lookupとlist/membersとaccount/verify_credentialsだけで、合計150回のレートリミットがかけられている。これはその他の350回とは独立していて、mikutterは通常よりもusers/lookupを大量に呼ぶ実装なため、150回を食いつぶす可能性がある。また、表示してるリストの数とリストの更新間隔の値によっては、それだけで150リクエストを超える。
この状態になると、通常のAPIとは違いレスポンスコード401が帰ってきて、チケットの説明のようなレスポンスが返ってくるため、認証画面が表示されていた。
users/lookupをできるだけ呼び出さないようにキャッシュ機能を改善する必要があるが、これはTwitterの不具合であり、上に上げたスレッドの進行を見ても早期解決は望めないため、より根本的に解決するにはAPI 1.1に早期移行するしかないと思われる。
toshi_a 初音 さんが約12年前に更新
- ステータス を 実装待ち から 様子見 に変更
初めて起動する時に上記のような規制にかかっていた場合は警告を出してクラッシュするのは変わらないが、二回目以降の起動を改善した。
まず、Serviceオブジェクトの初期化時に、ユーザオブジェクトをプラグイン設定から復元して仮に作成する。
次に、従来通りaccount/verify_credentials.jsonをリクエストする。リクエストに成功すれば、プラグイン設定にそのユーザ情報を書き込み、失敗すれば何もせずにそのまま起動処理を続行する。
これによって、users/lookupやlists/membersが動かないためリストやフォロー/フォロワー関連の処理は正常に動作しないが、一応起動はしてそれ以外の機能は正常に使用出来る。あとはAPI側の問題なので、(API v1.0で)クライアントサイドでできる対応はここまでだと思う。