2011-03-16 121 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