Comment contrôler l'application web « flux » d'un ASP.NET MVC (3.0) qui repose sur l'adhésion à Facebook, avec Facebook SDK C #?

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

  •  25-09-2019
  •  | 
  •  

Question

Je veux supprimer totalement le système d'adhésion ASP.NET standard et utiliser Facebook pour que l'adhésion de mon application web. Remarque, ce n'est pas une question d'application de toile Facebook.

En règle générale, dans une application ASP.NET vous avez des principales propriétés et méthodes pour contrôler le « flux » d'une application. Notamment: Request.IsAuthenticated, [Authorize] (dans les applications MVC), Membership.GetUser() et Roles.IsUserInRole(), entre autres. On dirait que [FacebookAuthorize] équivaut à [Authorize]. Est fbApp.Session != null essentiellement les mêmes que Request.IsAuthenticated?

En outre, il y a un travail standard que je fais sur tous les contrôleurs de mon site. Alors je construit un BaseController qui l'emporte sur OnActionExecuting(FilterContext). En règle générale, je POPULATE ViewData avec le profil de l'utilisateur dans cette action. la performance souffrirait si je faisais un appel à fbApp.Get("me") dans cette action?

J'utilise le Javascript SDK Facebook pour faire l'enregistrement, ce qui est agréable et facile. Mais c'est tout côté client, et je vais avoir du mal à envelopper mon esprit autour quand utiliser les appels facebook-côté client par rapport à côté serveur. Il y aura un moment où je dois saisir uid facebook de l'utilisateur et le stocker dans une table « de profil » et quelques autres bits de données. Ce serait probablement meilleure façon de traiter l'URL de retour du plugin enregistrement ... correct?

Sur une note de côté, ce que les données sont renvoyées de fbApp.Get("me")?

Était-ce utile?

La solution

Le SDK Facebook C # fournit un filtre d'action appelé [FacebookAuthorize] qui va gérer l'authentification comme vous décrivez. Et oui, fbApp.Request == null est la bonne façon de déterminer si l'utilisateur est authentifié. Je pense que je vais ajouter une propriété sur la prochaine version appelée IsAuthenticated pour le rendre plus facile.

Vous avez raison à utiliser le SDK Javascript pour la connexion. En gros, comment cela fonctionne est le côté Javascript crée le cookie qui FacebookApp lit et vérifie. Pour une application non-toile vous avez essentiellement à utiliser le SDK Javascript. Vous pouvez tout faire manuellement avec OAuth, mais ce serait une douleur énorme.

Et en ce qui concerne le résultat de fbApp.Get ( « moi »), le résultat est un JsonObject. Vous pouvez y accéder de deux façons:

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

Nous avons plus des exemples de code sur notre .

scroll top