FacebookのC#SDKで、Facebookの会員に依存しているASP.NET MVC(3.0)Webアプリケーションの「流れ」を制御するには?
-
25-09-2019 - |
質問
私は完全に標準のASP.NETメンバーシップシステムを削除し、唯一の私のWebアプリのメンバーシップのためのFacebookを使用したいです。 の注意、これはFacebookのキャンバスアプリの問題ではありません。の
一般的には、ASP.NETアプリケーションであなたはアプリの「流れ」を制御するために、いくつかのキープロパティ&メソッドを持っています。特に:Request.IsAuthenticated
、(MVCアプリケーションにおいて)[Authorize]
、Membership.GetUser()
とRoles.IsUserInRole()
、とりわけ。 [FacebookAuthorize]
が[Authorize]
と同等であるように見えます。 fbApp.Session != null
は、基本的にRequest.IsAuthenticated
と同じですか?
また、私は自分のサイト内のすべてのコントローラにわたって行ういくつかの標準的な作業があります。 OnActionExecuting(FilterContext)
をオーバーライドするBaseControllerを構築し、私はそう。一般的に、私はこのアクション内でのユーザのプロファイルとのViewDataを取り込みます。私はこのアクションでfbApp.Get("me")
への呼び出しを行った場合しまうのパフォーマンスが低下?
私はいいと簡単です登録を行うにはFacebookのJavascriptのSDKを使用します。しかし、それは、すべてのクライアント側だし、サーバー側の対クライアント側のFacebookの電話を使用するとき、私は周りに私の心を包む苦労しています。私は、ユーザーのFacebookのUIDを取得し、データのいくつかの他のビットと一緒に「プロファイル」テーブルに保存する必要があるときにポイントがあります。それはおそらく最良の登録プラグインからの戻りURL上で処理されるだろう...正しい?
サイドノートでは、どのようなデータがfbApp.Get("me")
から返される?
解決
FacebookのC#SDKを使用すると、記述のように認証を処理します[FacebookAuthorize]と呼ばれるアクションフィルタを提供します。そして、はい、fbApp.Request == nullは、ユーザーが認証されるかどうかを判断するための正しい方法です。私はそれを容易にするためにisAuthenticatedと呼ばれる次のリリースにプロパティを追加すると思う。
あなたはログイン用のJavascript SDKを使用して正しいです。基本的には、Javascriptの側はFacebookAppの読み取りと検証というクッキーを作成する方法、それは作品です。非キャンバスアプリのためには、基本的にはJavascriptのSDKを使用する必要があります。あなたはOAuthを持つすべて手動でそれを行うことができ、それは巨大な痛みになります。
そしてfbApp.Getの結果について(「私」)は、結果はJsonObjectです。あなたはそれを2つの方法でアクセスすることができます:
// Using dynamic (.Net 4.0 only)
var app = new FacebookApp();
dynamic me = app.Get("me");
string firstName = me.first_name;
string lastName = me.last_name;
string email = me.email;
// Using IDictionary<string, object> (.Net 3.5, .Net 4.0, WP7)
var app = new FacebookApp();
var me = (IDicationary<string,object>)app.Get("me");
string firstName = (string)me["first_name"];
string lastName = (string)me["last_name"];
string email = (string)me["email"];
私たちは、 CodePlexにウィキに。
に多くのコードサンプルを持っています