ASP MVC Twitter授权

时间:2011-03-16 15:43:50

标签: asp.net-mvc-2 twitter

我正在尝试创建一个允许用户登录并加入群组的应用程序。在加入组并成功登录用户时,将显示特定于该组的项目列表。

目前我正在尝试使用Twitter作为授权方式,我遇到了问题。我整天都在看Twitterizer和TweetSharp而没有任何运气,问题似乎是找到一些与我正在使用的架构有关的例子:ASP .NET MVC2,我似乎无法弄清楚我将如何实现这个使用控制器等的授权功能。

谢谢,这个总新手。 千电子伏。

2 个答案:

答案 0 :(得分:2)

我已经在ASP.NET MVC中使用Twitterizer实现了这一点。

首先,您有一个Login操作,该操作在授权用户并保存令牌的控制器上获取用户名和密码:

[HttpPost]
public ActionResult Login(string username, string password) {
    OAuthTokenResponse tokens;
    var consumerKey = ConfigurationManager.AppSettings["TwitterConsumerKey"];
    var consumerSecretKey = ConfigurationManager.AppSettings["TwitterConsumerSecret"];         
    try {

        tokens = XAuthUtility.GetAccessTokens(consumerKey, consumerSecretKey, username, password);
        Session["AccessToken"] = tokens.Token;
        Session["AccessTokenSecret"] = tokens.TokenSecret;
     }
     catch (ArgumentNullException) {
        ViewData["message"] = "Username or password incorrect";
        return View();
     }
     ViewData["message"] = "You are logged in to twitter as " + tokens.ScreenName;
     return View();
}

然后你有一个PostMessage动作,它将消息内容和帖子发送到twitter:

[HttpPost]
public ActionResult PostMessage(string message ) {
     // you should check to make sure the user is actually logged in by checking the session vars first

     var tokens = new OAuthTokens
                      {
                          AccessToken = Session["AccessToken"],
                          AccessTokenSecret =  Session["AccessTokenSecret"],
                          ConsumerKey = consumerKey,
                          ConsumerSecret = consumerSecretKey
                      };

     var tweetResponse = TwitterStatus.Update(tokens, data.Message);
     if (tweetResponse.Result == RequestResult.Success) {
        ViewData["message"] = "Message posted!";
     } else {
        ViewData["message"] = "Error posting to twitter.";
     }
     return View();
}

此代码未经过测试,应添加更多错误检查,但它应该让您入门......

答案 1 :(得分:2)

您需要创建自定义MembershipProvider。这是一个关于如何做到这一点的好教程: http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

本教程中提供的内容比您需要的更多,但基本上您需要做的是创建一个继承自System.Web.Security.MembershipProvider的新类并覆盖ValidateUser方法。在该方法中,您将从我之前的答案中调用twitter登录代码,并在成功时返回true或false。您还需要修改web.config的<membership/>部分,以告知ASP.NET在授权时使用您的自定义成员资格提供程序。