ASP MVC Twitter Авторизация - PullRequest
       0

ASP MVC Twitter Авторизация

2 голосов
/ 16 марта 2011

Я пытаюсь создать приложение, которое позволит пользователю войти в систему и присоединиться к группе. После присоединения к группе и успешного входа в систему пользователю будет представлен список элементов, относящихся к этой группе.

В настоящее время я пытаюсь использовать Twitter в качестве средства авторизации, и у меня возникают проблемы. Я смотрел на Twitterizer и TweetSharp весь день, но мне не повезло, проблема, похоже, заключается в том, чтобы найти примеры, относящиеся к используемой мной архитектуре: ASP .NET MVC2, я не могу понять, как бы это реализовать функция авторизации с использованием контроллеров и т. д.

Спасибо, новичок в этом. Кев.

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

Вы захотите создать собственный MembershipProvider. Вот хороший учебник о том, как это сделать: http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

В учебнике содержится больше деталей, чем нужно, но в основном вам нужно создать новый класс, наследующий от System.Web.Security.MembershipProvider, и переопределить метод ValidateUser. В этом методе вы вызовете код входа в Twitter из моего предыдущего ответа и вернете true или false в случае успеха. Вам также нужно будет изменить раздел <membership/> в файле web.config, чтобы ASP.NET использовал свой пользовательский поставщик членства при авторизации.

2 голосов
/ 16 марта 2011

Я реализовал это с помощью 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();
}

Этот код не был проверен, и следует добавить дополнительную проверку ошибок, но он должен помочь вам начать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...