2011年09月29日

TwitterizerをASP.NET MVCで利用してみた

.Netで利用できるtwitter API用のライブラリであるTwitterizerを試してみたのでメモしておきます。 作成したページ:

(ログイン済時)

(未ログイン時)

手順: twitterからConsumer key/secretを取得します。 Twitterizerのライブラリをダウンロードします(今回は2.3.3を利用) 新規で空のMVCプロジェクトを作成します twitterizer2.dllを参照に追加します

こちらが作成したコントローラー

using System.Web.Mvc;

namespace Twitterizer.Controllers
{
    public class TwitterController : Controller
    {
        string ConsumerKey = "コンシューマーキー";
        string ConsumerSecret = "コンシューマーシークレット";

        public ActionResult Index()
        {
            //ログインしていない場合はログインボタンを表示する
            if (Session["AccessToken"] == null)
            {
                return View();
            }
            else
            {
                var statusResponse = ShowTimeline();
                return View(statusResponse);
            }
        }

        [HttpPost]
        public ActionResult Index(FormCollection collection)
        {
            string PostMessage = collection["comment"];

            //tweetを投稿する
            TwitterResponse tweetResponse = TwitterStatus.Update((OAuthTokens)Session["AccessToken"], PostMessage);

            if (tweetResponse.Result != RequestResult.Success)
            {
                @TempData["message"] = "投稿に失敗しました。 : " + tweetResponse.ErrorMessage;
            }

            var statusResponse = ShowTimeline();
            return View(statusResponse);
        }


        public void Login()
        {
            string callbackAddress = "http://localhost:62415/twitter/callback";
            //Requestトークンを取得する
            OAuthTokenResponse authorizationTokens = OAuthUtility.GetRequestToken(ConsumerKey, ConsumerSecret, callbackAddress);
            Response.Redirect(string.Format("http://twitter.com/oauth/authenticate?oauth_token={0}", authorizationTokens.Token), true);
        }

        public ActionResult Callback()
        {
            if (Session["AccessToken"] == null)
            {
                //Accessトークンを取得する
                OAuthTokenResponse tokens = OAuthUtility.GetAccessToken(
                ConsumerKey,
                ConsumerSecret,
                Request.QueryString["oauth_token"],
                Request.QueryString["oauth_verifier"]);

                OAuthTokens accessToken = new OAuthTokens();
                accessToken.AccessToken = tokens.Token;
                accessToken.AccessTokenSecret = tokens.TokenSecret;
                accessToken.ConsumerKey = ConsumerKey;
                accessToken.ConsumerSecret = ConsumerSecret;

                //Accessトークンをセッションに格納する
                Session["AccessToken"] = accessToken;
            }
            return RedirectToAction("Index");
        }

        private TwitterStatusCollection ShowTimeline()
        {
            TimelineOptions options = new TimelineOptions()
            {
                //ホームタイムラインの取得する行を5行に設定する
                Count = 5
            };
            
            //ホームタイムラインを取得する
            TwitterResponse statusResponse = TwitterTimeline.HomeTimeline((OAuthTokens)Session["AccessToken"],options);
            return statusResponse.ResponseObject;
        }
    }
}
こちらが作成したビュー
@model Twitterizer.TwitterStatusCollection
@{
    ViewBag.Title = "Index";
}

@if (Session["AccessToken"] == null)
{
    using (Html.BeginForm("Login", "Twitter"))
    { 
    
    }
}
else
{
    
@foreach (var s in Model) {
@s.User.ScreenName
@s.User.ScreenName @s.Text
}
@using (Html.BeginForm("Index", "Twitter")) {
}
@if (TempData["message"] != null) { @TempData["message"] }
}
以上です。
posted by まーつん at 01:29| Comment(4) | TrackBack(0) | ASP.NET MVC | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。