我正在尝试创建一个允许用户登录并加入群组的应用程序。在加入组并成功登录用户时,将显示特定于该组的项目列表。
目前我正在尝试使用Twitter作为授权方式,我遇到了问题。我整天都在看Twitterizer和TweetSharp而没有任何运气,问题似乎是找到一些与我正在使用的架构有关的例子:ASP .NET MVC2,我似乎无法弄清楚我将如何实现这个使用控制器等的授权功能。
谢谢,这个总新手。 千电子伏。
答案 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在授权时使用您的自定义成员资格提供程序。