So steuert die „fließt“ eine ASP.NET MVC (3.0) Web-Anwendung, die mit Facebook C # SDK auf Facebook Mitgliedschaft beruht?

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

  •  25-09-2019
  •  | 
  •  

Frage

Ich möchte ganz auf den Standard ASP.NET Mitgliedschaftssystem entfernen und verwenden Facebook nur für meine Web-App-Mitgliedschaft. Hinweis, dies ist nicht ein Facebook-App Leinwand Frage.

Normalerweise in einer ASP.NET-Anwendung haben Sie einige der wichtigsten Eigenschaften und Methoden zur Steuerung des „flow“ eine App. Bemerkenswert: Request.IsAuthenticated, [Authorize] (in MVC-Anwendungen), Membership.GetUser() und Roles.IsUserInRole(), unter anderem. Es sieht aus wie [FacebookAuthorize] äquivalent zu [Authorize]. Ist fbApp.Session != null im Wesentlichen die gleiche wie Request.IsAuthenticated?

Außerdem gibt es einige Standard-Arbeit, die ich über alle Controller in meiner Seite tun. Also habe ich eine Base gebaut, dass Überschreibungen OnActionExecuting(FilterContext). Typischerweise besiedeln, ich Viewdata mit dem Profil des Benutzers innerhalb dieser Aktion. Würde die Leistung darunter leiden, wenn ich einen Anruf zu fbApp.Get("me") in dieser Aktion gemacht?

Ich verwende das Facebook Javascript SDK Registrierung zu tun, das ist schön und einfach ist. Aber das ist alles Client-Seite, und ich habe eine harte Zeit, um meine Gedanken Umwickeln, wenn die Client-Seite Facebook Anrufe im Vergleich zu Server-Seite zu verwenden. Es wird ein Punkt sein, wenn ich brauche den Benutzer Facebook greifen uid und speichern sie in einem „Profil“ Tisch zusammen mit einigen anderen Datenbits. Das wäre wahrscheinlich am besten auf der Rückkehr URL aus der Registrierung Plugin behandelt ... richtig?

Auf einer Seite zur Kenntnis, welche Daten von fbApp.Get("me") zurückgegeben?

War es hilfreich?

Lösung

Die Facebook C # SDK bietet ein Action-Filter genannt [FacebookAuthorize], der die Authentifizierung behandelt wie Sie beschreiben. Und ja, fbApp.Request == null ist der richtige Weg, um festzustellen, ob der Benutzer authentifiziert ist. Ich denke, ich werde eine Immobilie an der nächsten Version hinzufügen genannt IsAuthenticated, um es einfacher zu machen.

Sie sind richtig, den Javascript-SDK für die Anmeldung bei der Verwendung. Im Grunde genommen, wie es funktioniert, ist die Javascript Seite das Cookie erstellt, dass FacebookApp liest und überprüft. Für eine nicht-Leinwand App müssen Sie im Grunde den Javascript-SDK verwenden. Sie könnten es tun alles manuell mit OAuth, aber das wäre ein großer Schmerz sein.

Und in Bezug auf das Ergebnis der fbApp.Get ( „me“) ist das Ergebnis ein JsonObject. Sie können es zwei Arten zugreifen:

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

Wir haben mehr Code-Beispiele auf unserer Codeplex Wiki .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top