Cómo controlar el “flujo” de un ASP.NET MVC (3.0) aplicación web que se basa en la pertenencia a Facebook, con Facebook C # SDK?

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

  •  25-09-2019
  •  | 
  •  

Pregunta

Quiero eliminar por completo el sistema de suscripción de ASP.NET estándar y utilizar Facebook sólo para la membresía de mi aplicación web. Nota, esto no es una cuestión de lona Facebook aplicación.

Por lo general, en una aplicación ASP.NET que tiene algunas propiedades clave y métodos para controlar el "flujo" de una aplicación. En particular: Request.IsAuthenticated, [Authorize] (en aplicaciones MVC), y Membership.GetUser() Roles.IsUserInRole(), entre otros. Parece que [FacebookAuthorize] es equivalente a [Authorize]. fbApp.Session != null es esencialmente el mismo que Request.IsAuthenticated?

Además, no es un trabajo que hago estándar en todos los controladores en mi sitio. Así que he construido un BaseController que anula OnActionExecuting(FilterContext). Por lo general, me pueblan ViewData con el perfil del usuario dentro de esta acción. rendimiento sufrirían si hice una llamada a fbApp.Get("me") en esta acción?

Yo uso el Facebook Javascript SDK para hacer el registro, que es agradable y fácil. Pero eso es todo del lado del cliente, y estoy teniendo dificultades para envolver mi mente alrededor de cuándo utilizar las llamadas del lado del cliente de Facebook frente del lado del servidor. Habrá un momento en el que necesito para agarrar facebook del usuario UID y almacenarlo en una mesa "perfil", junto con otros pocos bits de datos. Eso probablemente sería mejor modo de tratar en la url de retorno desde el registro de plug-in ... correcto?

En una nota lateral, los datos que se devuelve desde fbApp.Get("me")?

¿Fue útil?

Solución

El Facebook C # SDK proporciona un filtro de acción llamada [FacebookAuthorize] que se encargará de la autenticación como el que describes. Y sí, fbApp.Request == null es la forma correcta para determinar si el usuario es autenticado. Creo que voy a añadir una propiedad en la próxima versión llamada IsAuthenticated para que sea más fácil.

son correctos en el uso del SDK Javascript para iniciar sesión. Básicamente, la forma en que funciona es el lado Javascript crea la cookie que FacebookApp lee y verifica. Para una aplicación no lienzo que básicamente tienen que utilizar el SDK Javascript. Se podía hacerlo todo de forma manual con OAuth, pero eso sería un dolor enorme.

Y con respecto al resultado de fbApp.Get ( "yo") el resultado es una JSONObject. Se puede acceder a él de dos maneras:

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

Tenemos más ejemplos de código en nuestro CodePlex wiki .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top