2011-03-16 87 views
2

我试图创建一个应用程序,这将允许用户登录并加入一个组。在加入某个组并成功登录该用户时,将显示特定于该组的项目列表。ASP MVC Twitter的授权

目前,我试图使用Twitter作为授权的手段,我有问题。我一直在寻找Twitterizer和TweetSharp整天没有任何运气,这个问题似乎是找到一些例子涉及到我使用的架构:ASP .NET MVC2,我似乎无法找出我将如何实现这个使用控制器等

谢谢,在此总新手授权功能。 Kev。

回答

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在执行授权时使用您的自定义成员资格提供程序。

+0

谢谢你的帮助! – Apollo 2011-03-16 16:25:10

2

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

首先,你有一个登录的行动,采取的是授权用户和控制器上的用户名和密码保存令牌:

[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的用语,使邮件内容和帖子叽叽喳喳:

[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(); 
} 

此代码并没有进行测试,应该增加更多的错误检查,但它应该让你开始...

+0

感谢您好的答复,我要澄清,我想微博是“测井”或“登记”与应用程序的主要方法。因此,会显示一个初始屏幕,要求用户登录,以便将他们引导至Twitter,以允许/拒绝应用程序访问其Twitter帐户 - 并重新导向回。在这种情况下是否适用相同的逻辑?再次感谢。 – Apollo 2011-03-16 16:08:19

+0

对不起,我完全误读你的问题。请看我的其他答案。 – jaminto 2011-03-16 16:23:01