如何控制"流动"的一个ASP.NET 视(3.0)维网应用程序,依靠Facebook成员,Facebook C#SDK?

StackOverflow https://stackoverflow.com/questions/4610851

  •  25-09-2019
  •  | 
  •  

我想要完全删除的标准ASP.NET 成员资格系统和使用Facebook只为我的网应用程序的成员。 注意,这不是一个Facebook画布上应用程序的问题。

通常,在一个ASP.NET 有一些关键性的与方法来控制"流动"的一个应用程序。值得注意的是: Request.IsAuthenticated, [Authorize] (在软应用程序), Membership.GetUser()Roles.IsUserInRole(), 除其他人。它看起来像 [FacebookAuthorize] 相当于 [Authorize].是 fbApp.Session != null 基本上是一样的 Request.IsAuthenticated?

此外,还有一些标准的工作我做的所有控制在我的网站。所以我建立了一个BaseController复盖 OnActionExecuting(FilterContext).通常,我填可视数据用与用户配置文件内的这个行动。将性能遭受如果我做了一个呼叫 fbApp.Get("me") 在这个动作?

我使用Facebook Javascript SDK做到登记,它是好的和容易的。但是,这是所有客户机-一边,而我有一个很难缠绕我心,当使用客户端的facebook呼吁对服务器的一侧。会有一点的时候我需要抓住户的facebook uid并将其存储在一个"资料"表以及一些其他的比特数据。这很可能是最好的处理上返回url从登记。正确的吗?

在一个侧面说明,什么样的数据是返回 fbApp.Get("me")?

有帮助吗?

解决方案

在Facebook C#SDK提供了一个行动过滤器称为[FacebookAuthorize],将处理认证喜欢你描述的。是的,fbApp.请求==null是正确的方法来确定用户进行身份验证。我想添加一财产上的下一版本名为IsAuthenticated使它更加容易。

你是正确的,在使用Javascript SDK for登录。基本上,它是如何工作的Javascript侧创建cookie FacebookApp读取和验证.对于非画布的程序基本上你有使用Javascript SDK。你可以做到这一点,所有手工与保护身份验证,但这将是一个巨大的痛苦。

和关于结果的fbApp.获得("我")的结果是一JsonObject.你可以访问这两个方面:

// 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"];

我们有更多的代码样本上我们的 更wiki.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top