2011-03-16 9 views
2

ユーザーがログインしてグループに参加できるアプリケーションを作成しようとしています。グループへの参加時に、そのユーザーに正常にログインすると、そのグループに固有の項目のリストが表示されます。ASP MVC Twitter権限

現在、私は認可手段としてTwitterを使用しようとしており、問題が発生しています。私はTwitter.comと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

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の作用を有し、ツイッターへの投稿:

[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アカウントへのアクセスを許可/拒否するためにTwitterに誘導し、リダイレクトします。このシナリオで同じロジックが適用されますか?再度、感謝します。 – Apollo

+0

申し訳ありませんが、私は完全にあなたの質問を誤解しました。私の他の答えを見てください。 – jaminto