【C#】CoreTweetやってみた
最近、ちょこちょことCoreTweetを試している。 よーやくプログラムをマシに触れるようになってきた気がするよ。
■CoreTweet(日本語版GitHub) github.com
一番ありがたいおまとめは、下のサイト
というわけで、ひと通りやってみた。
【環境】 WindowsWPFアプリケーション .net 4.5
認証周り(WPF)
using CoreTweet; using System.Configuration; namespace MyProject.CoreTweet { class CoreTweetConnection { private string consumer_key = ConfigurationManager.AppSettings["consumer_key"]; private string consumer_secret = ConfigurationManager.AppSettings["consumer_secret"]; private string AccessToken = Properties.Settings.Default.AccessToken; private string AccessTokenSecret = Properties.Settings.Default.AccessTokenSecret; public OAuth.OAuthSession Settion; public Tokens token; public CoreTweetConnection() { if (string.IsNullOrWhiteSpace(AccessToken)) { WebAutority(); } token = Tokens.Create(consumer_key, consumer_secret, Properties.Settings.Default.AccessToken, Properties.Settings.Default.AccessTokenSecret); } public void WebAutority() { if (!string.IsNullOrWhiteSpace(AccessToken)) return; var webWindow = new WebWindow(); Settion = OAuth.Authorize(consumer_key, consumer_secret); webWindow.MainWebBrowser.Source = Settion.AuthorizeUri; webWindow.Show(); } } }
認証は2種類方法がある感じ。 [Tokens.Create]で、consumer_key、consumer_secret、AccessToken、AccessTokenSecretの4種類を引数に渡して上げる方法。 それから、OAuthで一度consumer_key、consumer_secretを元に、許可ページに飛ばして、承認してもらう必要がある。
以下でWPFのWeb Browserコントロールを使って、承認プラスPINコードの探索取得を行ってみたもの。
認証画面表示ウインドウ(XAMLは省略)
using System.Windows; using mshtml; namespace MyProject.CoreTweet { /// <summary> /// WebWindow.xaml の相互作用ロジック /// </summary> public partial class WebWindow : Window { public WebWindow() { InitializeComponent(); } private void LoadComplead(object sender, System.Windows.Navigation.NavigationEventArgs e) { if (MainWebBrowser.Document == null) return; HTMLDocument doc = (HTMLDocument)MainWebBrowser.Document; IHTMLElementCollection collection = doc.getElementsByTagName("code"); foreach (IHTMLElement x in collection) { Properties.Settings.Default.ping = x.innerText; Properties.Settings.Default.Save(); Close(); } } } }
認証してからPINコードを取得する方法がさっぱりわからず、ウェブスクレイピング周りをひたすら調べた。 とりあえず、mshtmlライブラリで、WebブラウザコントロールからDocumentをキャストして持ってきて、Elementsを探すという手法でなんとかいけた。 ただ、Foreachで探索しているのが、なんとも。
取得した情報はSettingsファイルに保存して、再利用を測ってます。