C#アプリからタイムラインの取得、投稿を実施してみた。
面倒なOAuth認証はTwitterizerライブラリを使用した。
取得したタイムラインをもとになんらかの処理をやってみたり、何らかの処理の結果をTwitterに投稿してみたりと、Twitterとの連携に使えそうである。
2014/01/19 追記
なんか認証エラーでTweetが取得できなくなってる(API 1.0終了がらみかな)。
Twitterizerの代わりにTweetsharpっていうライブラリ使ったら取得できたよ。
C#アプリケーションでTwitter認証から投稿までやってみるの記事が参考になったよ!
Twitterizer
素早く簡単に.NETアプリからTwitterを使えるライブラリとのこと。
公式サイト( http://www.twitterizer.net/ )のGET ITからソースを落としてビルドする。
今回は以下からソースを入手した。
https://github.com/Twitterizer/Twitterizer
ビルドするとTwitterizer-develop\Release\Twitterizer2\Full\Twitterizer2.dllというDLLファイルが得られる。
このDLLをVisualStudioプロジェクトの参照に追加する。
(ソリューションエクスプローラの参照設定の部分で右クリックし、参照の追加を選択、(またはプロジェクト->参照の追加 メニューを選択し)、「参照の追加」ダイアログを表示させ、参照タブからTwitterizer2.dllを選ぶ。)
Consumer keyとAccess tokenの取得
アプリからTwitterにアクセスするのに必要なトークン類を入手する。
https://dev.twitter.com/appsにて新規登録し
Consumer keyとConsumer secretを取得する。
さらに、設定画面からaccess tokenの生成を行い、Access token、Access token secretを取得する。
また、設定画面で Access level に writeを追加しておく。(writeはアプリからTwitterへのデータ書き込み、つまりつぶやきの投稿の許可である。)
サンプルコード
前述の手順でTwitterizer2.dllをVisualStudioプロジェクトの参照に追加しておく。
using System;
using Twitterizer;
namespace ConsoleTwitter
{
public class Program
{
/// <summary>
/// 以下トークン文字列は
/// https://dev.twitter.com/apps にて Create a new application から生成します。
/// つぶやきを行う場合は Application type 設定で write も可能としておきます。
/// </summary>
const string CONSUMER_KEY = "hoge";
const string CONSUMER_SECRET = "hoge";
const string ACCESS_TOKEN = "hoge";
const string ACCESS_TOKEN_SECRET = "hoge";
static void Main(string[] args)
{
try
{
//トークンを設定
OAuthTokens tokens = new OAuthTokens();
tokens.AccessToken = ACCESS_TOKEN;
tokens.AccessTokenSecret = ACCESS_TOKEN_SECRET;
tokens.ConsumerKey = CONSUMER_KEY;
tokens.ConsumerSecret = CONSUMER_SECRET;
//ユーザの情報を取得
String username = "loftkun";
GetUserDetails(tokens, username);
//ユーザのタイムラインを取得
GetUserTimeline(tokens);
//つぶやく
DoUpdate(tokens, "つぶやきテスト");
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
}
/// <summary>
/// ユーザ情報を取得
/// </summary>
/// <param name="tokens">トークン</param>
/// <param name="username">ユーザ名</param>
private static void GetUserDetails(OAuthTokens tokens, String username)
{
try
{
TwitterResponse<TwitterUser> showUserResponse = TwitterUser.Show(tokens, username);
if (showUserResponse.Result == RequestResult.Success)
{
Console.WriteLine(showUserResponse.ResponseObject.Name);
Console.WriteLine(showUserResponse.ResponseObject.Description);
}
else
{
Console.WriteLine(showUserResponse.ErrorMessage);
}
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
}
/// <summary>
/// ユーザのタイムラインを取得
/// </summary>
/// <param name="tokens">トークン</param>
private static void GetUserTimeline(OAuthTokens tokens)
{
try
{
TwitterResponse<TwitterStatusCollection> res = TwitterTimeline.UserTimeline(tokens);
foreach (TwitterStatus status in res.ResponseObject)
{
Console.WriteLine(status.Text);
}
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
}
/// <summary>
/// つぶやく
/// </summary>
/// <param name="tokens">トークン</param>
/// <param name="body">本文</param>
private static void DoUpdate(OAuthTokens tokens, String body)
{
try
{
TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(tokens, body);
if (tweetResponse.Result == RequestResult.Success)
{
Console.WriteLine("Tweet posted successfully!");
}
else
{
Console.WriteLine("Something bad happened");
}
}
catch(Exception exp)
{
Console.WriteLine(exp.Message);
}
}
}
}
注 : 回数制限で怒られることがあります( Rate limit exceeded. Clients may not make more than 350 requests per hour. )

>公式サイト( http://www.twitterizer.net/ )のGET ITからソースを落としてビルドする。
公式サイトを確認したのですが どれをインストール(ダウンロード)すればいいのか? 分かりませんでした。
教えてもらえませんか?。。。
ツイッター ツイートアプリケーションを作成したいので。。。
・あの
>公式サイト( http://www.twitterizer.net/ )のGET ITからソースを落としてビルドする。
と書いてありますが 公式サイトを見たのですが ファイルがたくさんあって分かりません
どれをダウンロードし,ビルドすればいいのですか?
方法等を教えてください。
>★RYU-May進学ne-★さん
こんにちは。
ブログ冒頭の「2014/01/19 追記」の項目にも記載しておりますように、
Twitterizerはもう更新されておらず、使えないようです。
代わりにTweetsharpというライブラリが使えるようです。
参考)
http://thr3a.hatenablog.com/entry/20130921/1379728823
http://c-loft.com/blog/?p=2270
Tweetshapeもサポートが終わりだそうで、(別スレッドで独自ビルド版の話題が出ているのはそのため)Coretweetの紹介をして頂けないでしょうか?
http://blog.ch3cooh.jp/entry/20140808/1407464147
まあこのままなんですが、認証エラーに悩まされています。
>BURIさん
こんにちは。
ご紹介いただいたブログ記事( http://blog.ch3cooh.jp/entry/20140808/1407464147 )の
コードで動くようです。
試したコードは以下です(各種tokenは伏せ字してます)。
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var tokens = CoreTweet.Tokens.Create( "BjkdnW3XXXXXXXXXXXXXXXX" , "ELuaRVOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" , "9948530XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" , "eNs1EMyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); var text = "なんかつぶやいてみる"; tokens.Statuses.Update(new { status = text }); } }Json={“errors”:[{“message”:”Bad Authentication data”,”code”:215}]} が返ってきているということなので
token文字列の確認(ブログ記事にある{}の記号は不要です。)と、
ブログ記事にある”アプリケーションの権限の変更”の設定が
確実にされているかどうかを確認して見て下さい。
あー、{}の記号つけてました。(汗)
外したら動きました。ありがとうございます。
Xに変わってから認証に失敗するのは私だけ。。。?