Twitter の専用クライアントをセットアップするときの FAQ として「アカウントが認証されなくて使えない」というのがあります。
Web だと普通にログインできるアカウントが ID もパスワードも合ってるのに専用クライアントでエラーになってしまう原因は、ほぼまちがいなく PC 内蔵時計がズレてるです。
認証に使われてる OAuth / xAuth プロトコルがタイムスタンプも利用する仕様になっていて、このタイムスタンプがあまりに古いと Twitter では不正なリクエストとしてエラーにされてしまいます。
専用クライアントではタイムスタンプを PC 内蔵時計から得ているので、時計が狂ってるとエラーになってしまうのはそういうわけです。
これは OAuth の仕様で「タイムスタンプが古いリクエストは拒否ってもいいよ」となっていることを受けての Twitter 側の仕様のようです。
で、実際どれくらいズレてたらアウトなのか、手っ取り早く実際に PC の時計ずらして試してみました。
結果からいうと、「タイムスタンプが約 15 分以上標準時から遅れていたら Twitter の OAuth / xAuth 認証は失敗する」でした。
未来に進んでた場合は 24 時間以上先に進めても問題なかったです。
標準時ってのは世界標準時のことですけど、普通ローカルタイムに合わせてる PC 内蔵時計でも OS やプログラムがうまいこと世界標準時に換算して扱ってくれるので、とりあえず時報に時計合わせしとけば特に気にする必要はないです。
専用クライアントでアカウントがうまく設定できない、という人は PC の内蔵時計が遅れてないかチェック、というか ほぼ 100 パーセント遅れてるから時計合わせすれば解決します。きっと。
手前味噌ですけど、Twitter クライアントアプリ・チャーハン諸島には PC の時計が指す日時をポストしてくれる「妖怪ちくわぶ」機能がありますから、日時のズレをチェックしたい場合にはお勧めです!というか、15 分以上遅れてたら認証失敗でポストもできないので意味ないですけど!
15 分も時計が遅れてて認証失敗してたら、Twitter サーバのレスポンスに含まれる日時に時計合わせしてくれるクライアントアプリが存在してもいいと思う。チャーハン諸島は Java なので時計合わせとか超敷居高くてほぼ実装できない機能ですけど。
Twitter のサーバ時計との差が問題なら Twitter サーバの時計に合わせるべきなんじゃないか、という話もあるかと思いますが、Twitter は時刻合わせ用のサーバを公開していませんし、そもそもインターネットの標準として UTC 協定世界時に同期されているので、ユーザー側も自国の標準時に同期させれば問題ありません。
コメント