using System;
using System.Net;
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string consumerKey = "hoge";
string consumerSecret = "hogehoge";
Twitterizer.OAuthTokenResponse reqToken = Twitterizer.OAuthUtility.GetRequestToken(consumerKey, consumerSecret, "oob");
Uri uri = Twitterizer.OAuthUtility.BuildAuthorizationUri(reqToken.Token);
System.Diagnostics.Process.Start(uri.ToString());
Console.WriteLine("Pinコードを入力しる");
string pinCode = Console.ReadLine();
Twitterizer.OAuthTokenResponse accToken =Twitterizer.OAuthUtility.GetAccessToken(consumerKey, consumerSecret, reqToken.Token, pinCode);
Twitterizer.OAuthTokens token = new Twitterizer.OAuthTokens
{
ConsumerKey = consumerKey,
ConsumerSecret = consumerSecret,
AccessToken = accToken.Token,
AccessTokenSecret = accToken.TokenSecret
};
using (var twitterStream = new Twitterizer.Streaming.TwitterStream(token))
{
twitterStream.OnStatusReceived += (Twitterizer.TwitterStatus status) =>
{
Console.WriteLine(string.Format("{0}/({1})\r\n\t{2}",
status.User.Name,
status.User.ScreenName,
status.Text));
};
//twitterStream.StartUserStream();
//StartUserStreamメソッドがベータ版のURLに繋いでエラーになるから
//下記ソースの動作をURLだけ変えて実行
//http://pm.twitterizer.net/projects/twitterizer/repository/entry/tags/twitterizer-2.3.1/Twitterizer2.Streaming/TwitterStream.cs#L138
var builder = new Twitterizer.WebRequestBuilder(new Uri("https://userstream.twitter.com/2/user.json"), Twitterizer.HTTPVerb.GET, twitterStream.Tokens);
HttpWebRequest request = builder.PrepareRequest();
request.KeepAlive = true;
MethodInfo method = twitterStream.GetType().GetMethod("StreamCallback",
BindingFlags.Instance |
BindingFlags.NonPublic);
AsyncCallback callback = (_) =>
{
method.Invoke(twitterStream, new[] { _ });
};
request.BeginGetResponse(callback, request);
while (true) { }
}
}
}
}