CoreTweet を使ったアプリケーション開発をザックり解説 (1/2)

CoreTweet は、C# から TwitterAPI を扱うためのライブラリです。 他にいくつかのライブラリが存在しますが、2014.08.05 現在では、 CoreTweet 以外のプロジェクトは停止しているか、最新の API に対応していないようです。 CoreTweet のベースは C# ですが、Windows の他に、 Linux, Max-OSX, Android, iOS をサポートしています(諸々 Xamarin 経由のようです)。

ここでは Windows 環境下で CoreTweet を使う方法についてザックり解説します。 TwitterAPI や CoreTweet の詳細については、必要なら別途資料を探してください。

CoreTweet Home(日本語)

私も Twitter や Web 周りのことはほとんど何も知らなかったのですが、 CoreTweet とそのサンプルコードを見ながら簡単なアプリケーションは作れたので何とかなると思います。

Twitter に開発するアプリケーションを登録してキーを取得する

TwitterAPI を操作するアプリケーションを開発するには、https://apps.twitter.com/ に Twitter のアカウントでログインして、開発するアプリケーションの登録を行う必要があります。 アプリケーションの登録が完了すると、TwitterAPI のアクセスに必要なキーなどが発行されます。

キーはアプリケーション単位で管理されます。 例えば、アプリケーション-A のキーを、別のアプリケーション-B で利用することは許可されていません。

公式のアナウンスに従って、新しいアプリケーションを登録してください。 ここでは取得方法の概要だけ解説します。特にキャプチャなども掲載しません。 ここで解説する程度の内容で TwitterAPI と CoreTweet を使ったアプリケーションを開発するためには、 公式のページを読解し、登録できる程度の能力が必要になるでしょう。

  1. ログインしたら(右上にある)アカウントをクリックし、[My applications] を選択します。
  2. [Create New App] から新しいアプリケーションを登録することができます。
  3. アプリケーションの名前や概要を入力し、API の利用規約を承諾します。

登録が完了すれば TwitterAPI を利用したアプリケーション開発を開始することができるようになります。 また登録後はいつでもアプリケーションの設定を変更することができますが、TwitteAPI の設定などの解説は行いません。 ここではとりあえず2つのキー API keyAPI secret を控えておきます。

プログラムから認証する

ここからコーディングを開始します。ここでは WPF アプリケーションを想定していますが、 他のアプリケーションの形式でも手続きは同じです。

IT 分野ではある接続の開始から終了までをセッションと言いますが、 Twitter にアクセスする場合にも、まずはセッションを確保します。 (1)TwitterAPI を経由して Twitter に接続し、(2)認証して、(3)セッションを開始する、という手順です。

CoreTweet.OAuth.OAuthSession Session { get; set; }

public MainWindow()
{
    InitializeComponent();

    this.Session = OAuth.Authorize("API key",
                                   "API secret");
    this.WebBrowser.Source = this.Session.AuthorizeUri;
}

CoreTweet では、OAuth.Authorize メソッドによって認証し、セッションを開始することができます。 引数は、先ほど取得した2つのキー API keyAPI secret です。 ただし、ここでの認証とはユーザの情報を獲得する権利を得るものではないので注意してください。

次に Twitter のユーザが対象のアプリケーションの接続を許可する、という手続きが必要になります。 ユーザがアプリケーションの接続を許可するためには、Twitter にログインした状態で特定のページを開き、手動で許可する必要があります。 ユーザの許可を得るためのページの URL は、Session.AuthorizeUri によって取得することができます。

また先に Twittre に登録したアプリケーションのページにも同じ URL が掲載されています。 決め打ちでも良いですがこちらの方がスマートでしょう。 新たにブラウザを立ち上げて対象のページを開くか、 .Net / WPF であれば WebBrowser コンポーネント を利用するのが良いと思います。

PIN コードを使って認証を完了する

AuthorizeUri のページからログインして取得した PIN コードを使って TwitterAPI への接続と認証を完了します。 ここでは TextBox などに入力させ、認証ボタンを押したとき、PIN コードによる認証を実行します。

private void Button_Authorize_Click(object sender, RoutedEventArgs e)
{
    Tokens tokens = OAuth.GetTokens(this.Session, this.TextBox_PIN.Text);

    if (tokens == null)
    {
        this.TextBox_PIN.Text = "Failed to Authorize.";
    }
    else
    {
        this.TextBox_PIN.Text = "Authorized.";
        tokens.Statuses.Update(status => "CoreTweet Test.");
    }
}

PIN コードの認証には OAuth.GetTokens メソッドを利用します。 接続済みの対象の Session と、PIN コードが引数です。 戻り値は Token のインスタンスですが、 これはユーザアカウントを操作するためのオブジェクトと認識しておけば良いと思います。

接続して認証に成功すると Token からタイムラインを取得したり、 ツイートしたりすることができるようになるのですが、その解説は次回以降にします。 ここでは接続を完了したことを確認するために、とりあえず "CoreTweet Test." とツイートする処理を実行させています。