C#のTwitterアプリをxAuth対応しました

4月末のツイッターのリリースで、BASIC認証が6月末で終了し、OAuth認証とxAuth認証だけになるというのを知らずにゴールデンウィークをのほほーんと過ごしていたのですが、5月末に気づいて、あわてて対応しました。
こーゆーのって昨年のAmazonAPIでもありましたが、SOAとかマッシュアップのアキレス腱だと思うんです。BASIC認証が将来的になくなるというアナウンスはだいぶ前からあったみたいですが、javaのdeprecatedタグと違って本当になくなるので恐いですよね〜(笑)。今回だってTWEETコマンド、あま本、あまポンの3つのアプリを書き換えなければならず、企業のアプリとかで外部のサービス使うならきれいに作らないと、サービス呼んでいる所を探すなんてことになりかねません!
 
プログラミングの参考)C#ベースのサンプルがなかなかなかったのですが、私はShannon Whitleyさんのサンプルを参考にしました。これぐらいしかないと思います。ただしちょっとバグと問題があります。

public string ConsumerSecret {
  get {
    if (_consumerSecret.Length == 0)
    {
      _consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
    }
    return _consumerSecret;
  }
  set { _tokenSecret = value; }
}

ConsumerSecretのsetが_consumerSecretではなく、_tokenSecretにセットされるようになっています。
またConfigurationManager.AppSettingsで<アプリ名>.exe.configファイルを読み込むようになっているのですが、この方法を使うとconfigファイルのConsumerSecretを、メモ帳とかで簡単に読み取ることができます。つまり悪い人が、悪意のTWITTERアプリを作ってこのConsumerSecretを使って“なりすまし”をされる可能性が起きます。念のためコードも消したほうがいいでしょう。ここに載せませんがすぐ上のConsumerKeyも同様です。シンプルにこんな感じに変更。

public string ConsumerSecret {
  get { return _consumerSecret; }
  set { _consumerSecret = value; }
}