プロジェクト

全般

プロフィール

環境対応 #536

新規インストールしたmikutterが起動しない

Satoshi Okunoほぼ5年前に追加. 4年以上前に更新.

ステータス:
終了
優先度:
高め
担当者:
対象バージョン:
開始日:
2012-11-23
期日:
進捗率:

0%

プラグイン名:

説明

新規インストール(~/.mikutterがない状態)のmikutterが以下の例外で起動しなくなりました。
(Twitter側の仕様変更?)

・事象
/Users/moguno/mikutter/core/lib/mikutwitter/query.rb:70:in `query!': 400 #<Net::HTTPBadRequest:0x2d68ad8> (MikuTwitter::Error)
from /Users/moguno/mikutter/core/service.rb:187:in `user_initialize'
from /Users/moguno/mikutter/core/service.rb:52:in `initialize'
from /Users/moguno/mikutter/core/service.rb:23:in `new'
from /Users/moguno/mikutter/core/service.rb:23:in `services_refresh'
from /Users/moguno/mikutter/core/service.rb:28:in `all'
from /Users/moguno/mikutter/core/service.rb:33:in `primary'
from /Users/moguno/mikutter/mikutter.rb:37:in `<main>'

・原因
http://api.twitter.com/1/account/verify_credentials.json
へのアクセスに対して、リザルトコード400で以下のようなjsonが返ってきていました。 {"errors":[{"message":"Bad Authentication data","code":215}]}

・対策
AdHocですが上記のjsonが返ってきた場合は、認証ウインドウを表示するようにしました。
パッチを添付しますので確認をお願いします。

a.patch 表示 (805 Bytes) Satoshi Okuno, 2012-11-23 10:39

関係しているリビジョン

リビジョン 0f4ad521 (差分)
toshi_a 初音ほぼ5年前に追加

アクセストークンがない時、Serviceのコンストラクタで再認証を書けるようにした refs #536

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

リビジョン 0f4ad521 (差分)
toshi がほぼ5年前に追加

アクセストークンがない時、Serviceのコンストラクタで再認証を書けるようにした refs #536

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

履歴

#1 Satoshi Okunoほぼ5年前に更新

すみません。core/lib/mikutwitter/connect.rbのパッチです。

#2 toshi_a 初音ほぼ5年前に更新

  • トラッカー致命的 から 環境対応 に変更
  • ステータスパッチ適用待 から 進行中 に変更
  • 担当者toshi_a 初音 にセット
  • 優先度通常 から 高め に変更
  • 対象バージョン0.2 から 0.1.1 に変更

0.1.1でも再現しました(それ以下のバージョンの更新は終了しているので検証しません)。Twitterの挙動が変更されたことにより引き起こされているようです。よって、トラッカーは「環境対応」に変更します。
具体的には、従来、トークンが無効だった場合はHTTPレスポンスコード401を返すことになっていたのに対し、Twitter API 1.1では400と、エラーコード215を返すように変更されていますが、何故か現在、Twitter API v1.0を使用しているにも関わらず、Twitter API v1.1に準じたレスポンスを返しているようで、Twitterの不具合だろうと予想します。

これが恒久的なものかどうかはわかりませんが、現在のmikutterはトークンがなくてもとりあえずAPIリクエストを発生させて、401が返ってきた時に再認証ダイアログを表示する仕様になっています。これを、トークンがない時(≒初めて起動した時)にはリクエストを発行する前に問い合わせるように修正すれば解決します(トークンが失効した時の処理は別途必要ですが)。
頂いたパッチは現状うまく機能していますが、Twitter API v1.0の仕様どおりのレスポンスが帰ってきたら、規制された時にも認証ダイアログが表示されてしまうでしょう。現在の仕様にも上記のような問題があるので、こちらで対応してみます。

Error Codes & Response https://dev.twitter.com/docs/error-codes-responses

#3 toshi_a 初音ほぼ5年前に更新

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

対応完了。Webでトークンを破棄した状態でAPIリクエストを発行した場合の対策については、v1.0の仕様通り401が返って来たので特にしませんでした。Twitter側の不具合が原因なのでしばらく注意して様子を見ます。

#4 Satoshi Okunoほぼ5年前に更新

確認お疲れ様でした。

リビジョン1061で事象解決したのを確認しました。

#5 toshi_a 初音ほぼ5年前に更新

ありがとうございます。ただ、Twitterのバグが原因なので、Twitterの修正などが入ったタイミングでまたおかしくならないとも限りません。そんなことを言っていたらいつまでもクローズできないので適当なタイミングで閉じますが、もう少しだけ様子を見ます。

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

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

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