2011-01-04 2 views
0

Sie wissen, wie Benutzer das vorgefüllte Formular löschen und zur normalen Registrierung zurückkehren können?Löschen Sie alle Facebook-Profilfelder und füllen Sie das Anmeldeformular manuell aus.

Ich entwickle eine iframe-Registrierungs-App und wenn der Benutzer die Formularfelder löscht, sieht es so aus, als ob die signed_request noch gültig ist (wenn der Benutzer bei Laden bei facebook angemeldet wurde).

Weiß jemand, wie wir wissen sollen, ob der Benutzer wirklich FB info oder Registrierungsinformationen benutzt? Ich dachte vorher, dass die Sitzung uns sagen würde, aber meine Sitzung ist immer noch gültig, nachdem der Benutzer "clear form" erreicht hat.

// Check to make sure we have a signed_request object, if not, redirect to home 
var sreq = Request.Form["signed_request"]; 
if (string.IsNullOrEmpty(sreq)) 
{ 
Response.Redirect(WebConstants.SiteConstants.Home); 
} 

var app = new FacebookApp(); 

WARUM ist app.UserId immer noch ausgefüllt, wenn der Benutzer die FORM löscht!

Wie erkenne ich, dass wir wirklich mit FB integrieren wollen oder nicht?

danke!

Antwort

0

Registrierung und Authentifizierung sind zwei völlig verschiedene Dinge. Nur weil der Benutzer ein Formular "löscht", werden sie nicht von Facebook ausgeloggt. Das C# SDK erkennt gerade, ob eine signed_request existiert und gültig ist.

1

Ich stimme der Authentifizierung im Vergleich zur Registrierung zu, aber ich denke, die Facebook-API löscht das Authentifizierungs-Cookie nicht korrekt, da es immer noch gültig ist, wenn Sie das Formular löschen oder abmelden (ich verwende die iFrame-Registrierung). Ich suche nach einer Best Practice, da, wenn ich die signierte Anfrage bekomme, die ID der authentifizierte Benutzer ist, also die einzige Umgehung, die ich gerade habe, ist die Suche nach String.IsEmptyOrNull (im Passwortfeld) - was mir das sagt Benutzer hat keine Facebook-Registrierung verwendet). Ich denke, das ist ein Hack, aber wenn jemand den "richtigen" Weg kennt, eine signierte Anfrage zu machen und sie in ein Objekt zu konvertieren, dann kommentiere bitte meine Vorgehensweise. Es ist schon erstaunlich, dass wir immer noch eine Menge Code schreiben müssen, um einen einfachen Ansatz zu bekommen, um das zu bekommen, was wir brauchen. Ich habe eine Menge Beschwerden über die FB-Entwicklung gesehen und sie sind größtenteils wahr - das Google API ist nicht so frustrierend und FB macht es fast unmöglich, verschiedene Umgebungen zu testen (ganz zu schweigen von den berühmten Cookie-Problemen mit localhost).

Problem: App.UserId ist immer noch der authentifizierte Benutzer nach dem Löschen der Iframe-Formular oder Abmelden von FB - gehen Sie Abbildung.

Lösung: überprüfen Sie die presense von Passwort-Feld - das uns sagt, dass wir eine nicht-fb Registrierung los .... haben es

C# .NET für die ganze Minderheit aus.

// Check to make sure we have a signed_request object, if not, redirect to home var sreq = Request.Form["signed_request"]; if (string.IsNullOrEmpty(sreq)) { Response.Redirect(WebConstants.SiteConstants.Home); } 

    JObject meObject = null; 
    var app = new FacebookApp(); 
    if (app.SignedRequest != null) 
    { 
     meObject = JObject.Parse(app.SignedRequest.Dictionary["registration"].ToString()); 
     // Access meObject    
     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     fbReg = ser.Deserialize<FBRegistration>(meObject.ToString()); 
     if (fbReg != null) 
     { 
      // 02 Feb 2011 - MCS - bug in facebook API, does not delete cookie if logout of FB 
      // We check to see if we have password - then - we know we can check the UserId 
      if (String.IsNullOrEmpty(fbReg.password)) 
      { 
       // FB Registration 
       FacebookUserId = app.UserId; 
      } 
      else 
      { 
       FacebookUserId = 0; 
       // Non FB Registration 
Verwandte Themen