WebMatrix 3: Twitter ライブラリ Tweetinvi API でツイートしてみる
執筆日時:

たまたま Tweetinvi a friendly Twitter C# API - Home というのをみかけたのだけど、割と便利だった。
@{
var token = new TwitterToken.Token(
"*****************Pj5ecAhlw3SqBPU5qHtBUSiTQDcgmUzBU",
"*****************RZSPVglcM0TfE7mPCFzm334rw",
"*****************cSizQ",
"*****************zws06agyxRXImPk9sfETNQeg");
if (IsPost)
{
var tweet = new Tweetinvi.Tweet("てすてす");
tweet.Publish(token);
}
}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<title>マイ サイトのタイトル</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
<ul>
@foreach (var tweet in new Tweetinvi.User("daruyanagi", token).GetUserTimeline())
{
<li>@tweet.Text</li>
}
</ul>
<form action="" method="post">
<input type="submit" />
</form>
</body>
</html>

GET でタイムラインを表示(なんかゴミ(\)が入ってるけど、バグかな。あとで報告しよう)。POST でツイート。
てすてす
Twitter 系のライブラリってピンキリだけど、これは UserStreams も扱えるようで、悪くない感じかな。デスクトップアプリにも組み込める、というか、PIN の認証はあるけど Web アプリの認証は今のところ未実装みたいなので、どっちかっていうと今のところデスクトップアプリ向けって感じ。
不具合、直していただきました
レスポンス、ちょっぱや! 対応の早いところも推せますね、このライブラリ。ちなみに String.CleanString() という処理が入っているのが原因でした。
If you want to store the Text in a database you can still use the extension method :
String.CleanString() before the INSERT / UPDATE call.
String.CleanString() は String の拡張メソッドで、サニタイズだかエスケープだかをするのかな? MySQL はぜんぜん知らない。
/// <summary> /// Clean a string so that it can be used in a URL and /// sent to Twitter /// </summary> /// <param name="s">String to clean</param> /// <returns>Cleaned string</returns> public static string CleanString(this string s) { return s != null ? (s.HTMLDecode().MySQLClean().ReplaceNonPrintableCharacters('\\')) : null; }