【问题标题】:ASP MVC Twitter AuthorizationASP MVC Twitter 授权
【发布时间】:2011-03-17 00:22:34
【问题描述】:

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

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

谢谢,这方面的新手。 凯夫。

【问题讨论】:

    标签: asp.net-mvc-2 twitter


    【解决方案1】:

    您需要创建一个自定义 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 在进行授权时使用您的自定义成员资格提供程序。

    【讨论】:

      【解决方案2】:

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

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

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

      此代码未经测试,应添加更多错误检查,但它应该可以帮助您开始...

      【讨论】:

      • 您好,感谢您的回复,我应该澄清一下,我希望 Twitter 成为使用应用程序“登录”或“注册”的主要方法。因此将显示一个初始屏幕,要求用户登录,这将引导他们到 Twitter 以允许/拒绝应用程序访问他们的 Twitter 帐户 - 并重定向回来。相同的逻辑是否适用于这种情况?再次感谢。
      • 对不起,我完全误解了你的问题。请参阅我的其他答案。
      猜你喜欢
      • 2014-06-09
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 2015-09-16
      相关资源
      最近更新 更多