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

01647

ustreamer-01647

C# WPF初心者のCoreTweet入門3 設定ファイル入出力

プログラミング

これはC# WPF初心者のCoreTweet入門2 認証 - 01647に続く記事で,現時点のコードはhttps://gist.github.com/ustreamer-01647/a3c52b6305b2ca938c36/11dd2d13a3c726091965ff66833eb4a24c6d3878

Twitter認証結果を保存して,次回以降は省略できるようにする.実のところ,ファイル入出力操作は,直截的には書かない.C#の機能だかWPFの機能だかに依存して記述する.

ソリューションエクスプローラーのSettings.settingsをダブルクリック

PINで認証した結果のAccess TokenとAccess Token Secretが,このプログラムを利用するツイッタラーの鍵だ.これを保存したいから,stringを2項目作る.プロパティペインでDescription(説明)を書いておく.

MainWindowのプロパティペインでClosingイベントを作る

デザイン画面でMainWindowを選択する.Closing横のテキストボックスをダブルクリックする.MainWindowクラスのメンバ変数tokenが非nullの場合に保存させよう.

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    if ( tokens != null)
    {
        Properties.Settings.Default.AccessToken = tokens.AccessToken;
        Properties.Settings.Default.AccessTokenSecret = tokens.AccessTokenSecret;
    }
}

プログラム起動時にトークンを読み込ませる

MainWindowクラスのコンストラクタMainWindow()のInitializeComponent();の後に書く.

// load twitter token
if(string.IsNullOrEmpty(Properties.Settings.Default.AccessToken)
    && string.IsNullOrEmpty(Properties.Settings.Default.AccessTokenSecret))
{
    tokens = Tokens.Create(
        ApiKey
        , ApiSecret
        , Properties.Settings.Default.AccessToken
        , Properties.Settings.Default.AccessTokenSecret);
}

現時点のコードはhttps://gist.github.com/ustreamer-01647/a3c52b6305b2ca938c36/e3f590034c5292bd42ea1eb34d4fdd2faf0b06e8

タイムライン表示を以って動作確認とする

ボタンshowTimelineButtonとテキストボックスtimelineTextboxを追加した.ボタンをダブルクリックして,クリック時処理を記述する.startSettingから開始すると,showTimelineまで問題なかった.

private void showTimelineButton_Click(object sender, RoutedEventArgs e)
{
    timelineTextbox.Clear();
    foreach (var status in tokens.Statuses.HomeTimeline())
        timelineTextbox.AppendText(
            string.Format("{0}: {1}{2}", status.User.ScreenName, status.Text, Environment.NewLine));
}

現時点のコードはhttps://gist.github.com/ustreamer-01647/a3c52b6305b2ca938c36/4361dd979c3be3a85e0568bf4b5e8afc651b8c51

バグフィックス

  1. load twitter tokenについて,「アクセストークンが無い場合」に読み込む様になっている
    • NOTを示す「!」を各条件に追記して解決
  2. アクセストークンを再利用できない
    • 認証後の再起動にて,アクセストークンが空だった
      • 設定ファイルを読み込めていない.またはアクセストークンが保存されなかった
    • 参考文献を見返し,一文書き足して解決

現時点のコードはhttps://gist.github.com/ustreamer-01647/a3c52b6305b2ca938c36/f95f17f2efb2a767e224fc514f1d42e381ef3cd0

後記

  • はー SXGAつれーわー 大画面欲しーわー ほしい物リスト
  • アクセス修飾子PublicはDLLを作る場合だってよ.通常のプログラムならInternalのままで良いという.[設定] ページ (プロジェクト デザイナー)
  • timelineTextboxは,記事本文作成後に縦横スクロールAuto,NoWrapにした
  • 次回は「応答なし」を生まないよう,エラーを制御する.try{}catch(){}を書くのだろうか