読者です 読者をやめる 読者になる 読者になる

新しいLinqToTwitterの使い方(主に認証方法)

C# Twitter

最近C#でいろいろ書いてます。.NETからTwitterAPIをたたくライブラリはいろいろあるのですが、一番よさげなのがLinqToTwitter

でも2.0から仕様が変わってしまったみたいで、直接ユーザ名とアドレスを与える方法では使えなくなってしまいました。それで、OAuthとかよくわかってないながらもとりあえず動いたのでまとめます。

まずhttp://twitter.com/oauth_clientsで「Register a new application」から適当にアプリケーション名をでっちあげて登録します。自分はデスクトップアプリを作るつもりだったのでApplication TypeはClientを選択。登録すると、「Consumer key」と「Consumer secret」がもらえます。

次に使用したいプロジェクトの参照に「System.Configuration」を追加、おまじない

using System.Configuration;

をしときます。

そしたら以下のように書きましょう

ConfigurationManager.AppSettings["twitterConsumerKey"] = "さっき取得したやつ";
ConfigurationManager.AppSettings["twitterConsumerSecret"] = "さっき取得したやつ";
ITwitterAuthorization auth;
auth = new DesktopOAuthAuthorization();

var twitterCtx = new TwitterContext(auth, "https://twitter.com/", "http://search.twitter.com/");

var oauth = (DesktopOAuthAuthorization)twitterCtx.AuthorizedClient;
oauth.GetVerifier = () =>
{
    Console.Write("Please enter the PIN that Twitter gives you after authorizing this client: ");
    return Console.ReadLine();
};

if (oauth.CachedCredentialsAvailable)
{
    Console.WriteLine("Skipping OAuth authorization step because that has already been done.");
}

auth.SignOn();

そうすると初回はブラウザが起動してTwitterアカウントに組み付け(アプリ側へ返ってきた数値の手動入力が必要)、2回目以降は不思議な場所にキャッシュされて何もせずに認証を通過できます。

あとはデモ通りにやればだいたいのことはできるはず。(ただしデモは割と適当に書かれてるのでたまにNullReference例外とか発生します。そこは直す必要あり)