先ほどかちびと.net様から、投稿が成功したにも関わらず再投稿が繰り返されるとの不具合の報告を受けました。その対応のためプログラムを修正いたしましたのでご報告いたします。
まずバグの概要ですが、Twit Delay では、Twitter への投稿が成功した(200 OK が返ってきた)際に、本当に成功したか、POST 規制にも関わらず(Twit Delay から見て)成功したように見えているだけかを判定しています。Twitter API の statuses/update の仕様によれば POST 規制時には 403 Fobidden が返ってくると書かれておりますが、こちらで確認した限りでは 200 OK が返ってきてましたので投稿成功時に POST 規制の判定を行っております。
(修正前の)POST 規制判定方法は以下のとおりです。
- 200 OK が返ってきて
- 投稿時に Twitter API から返却される投稿日時が API 呼び出し以前(同時刻も含む)であり
- Twitter API から返却された投稿テキストが、実際に投稿したテキストと一致しない
テキストの一致判定は、Twitter では同じ内容の投稿が連続した場合、投稿を受け付けず、その場合も 200 OK を返しているため行っています。
で、今回のバグですが、Twitter へ投稿した際、投稿の末尾に空白(全角も含む)があると Twitter で除去されるため、API 呼び出しにタイムラグが無く返却されたテキストの末尾に空白が存在するとテキスト不一致により POST 規制と判別した、というものでした。
バグ報告を受け、POST 規制の判定方法を以下のように変更しております。
- 200 OK が返ってきて
- 投稿時に Twitter API から返却される投稿日時が API 呼び出し前(同時刻は含まない)であり
- Twitter API から返却された投稿テキストが、実際に投稿したテキストと一致しない(ただし空白文字の不一致は許容する)
こちらで他の予約投稿の処理状況を確認いたしましたところ、同じ問題にて再投稿が繰り替えされているユーザー様はいらっしゃいませんでしたが、ご自身の予約投稿に不具合を発見された方は @sakuratandotbiz までご報告頂ければと思います。
ご迷惑をおかけいたしましたことを謹んでお詫び申し上げます。
今後とも Twit Delay をよろしくお願い申し上げます。






