プロジェクト

全般

プロフィール

環境対応 #543

一部APIで認証時に常にエラーが発生する

toshi_a 初音4年以上前に追加. 4年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2012-12-09
期日:
進捗率:

0%

プラグイン名:

説明

以下のAPIをリクエストした時、
  • /lists/members
  • /accounts/verify_credentials

HTTPステータスコード401(Not Authorized)で、次のようなエラーが返ってくる。

{"errors":[{"code":53,"message":"Basic authentication is not supported"}]}

まだ検証は不十分だがTwitterサイドの不具合である可能性が高い。また、verify_credentialsが必ずエラーを返してくるため、単にコード53のエラーを無視したのではキャッシュが消えたらmikutterが起動できなくなる。

関係しているリビジョン

リビジョン ea465007 (差分)
toshi_a 初音4年以上前に追加

API規制されているにも関わらず401が返ってきた時に、認証ダイアログを無駄に出さないようにした refs #543

リビジョン ea465007 (差分)
Redmine Admin4年以上前に追加

API規制されているにも関わらず401が返ってきた時に、認証ダイアログを無駄に出さないようにした refs #543

リビジョン 6acd5a01 (差分)
toshi_a 初音4年以上前に追加

API規制されているにも関わらず401が返ってきた時に、認証ダイアログを無駄に出さないようにした refs #543

git-svn-id: svn://toshia.dip.jp/mikutter/branches/0.2@1084 03aab468-d3d2-4883-8b12-f661bbf03fa8

リビジョン 6acd5a01 (差分)
toshi が4年以上前に追加

API規制されているにも関わらず401が返ってきた時に、認証ダイアログを無駄に出さないようにした refs #543

git-svn-id: svn://toshia.dip.jp/mikutter/branches/0.2@1084 03aab468-d3d2-4883-8b12-f661bbf03fa8

リビジョン 3efaaca0 (差分)
toshi_a 初音4年以上前に追加

初回起動時以外は、前回起動時のユーザ情報を使ってServiceオブジェクトを初期化し、あとでverify_credentialsを実行するようにした refs #543

リビジョン 3efaaca0 (差分)
Redmine Admin4年以上前に追加

初回起動時以外は、前回起動時のユーザ情報を使ってServiceオブジェクトを初期化し、あとでverify_credentialsを実行するようにした refs #543

履歴

#1 toshi_a 初音4年以上前に更新

こちらのパラメータの渡し方が何かまずかったのが、Twitter側のエラーチェックの方法が変更されて弾かれるようになったのだろう(他のTwitterクライアントでは発生していない)。
場合によってはAPI 1.1に移行して対応する。

#2 toshi_a 初音4年以上前に更新

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に早期移行するしかないと思われる。

#3 toshi_a 初音4年以上前に更新

  • ステータス進行中 から 様子見 に変更

初めて起動する時に上記のような規制にかかっていた場合は警告を出してクラッシュするのは変わらないが、二回目以降の起動を改善した。
まず、Serviceオブジェクトの初期化時に、ユーザオブジェクトをプラグイン設定から復元して仮に作成する。
次に、従来通りaccount/verify_credentials.jsonをリクエストする。リクエストに成功すれば、プラグイン設定にそのユーザ情報を書き込み、失敗すれば何もせずにそのまま起動処理を続行する。
これによって、users/lookupやlists/membersが動かないためリストやフォロー/フォロワー関連の処理は正常に動作しないが、一応起動はしてそれ以外の機能は正常に使用出来る。あとはAPI側の問題なので、(API v1.0で)クライアントサイドでできる対応はここまでだと思う。

#4 toshi_a 初音4年以上前に更新

  • ステータス様子見 から 終了 に変更

他の形式にエクスポート: Atom PDF