Frage

Ich entwickle eine Facebook-App, und ich möchte nur Zugriff auf bestimmte Ansichten zulassen, wenn der Besucher durch Facebook autorisiert ist. Dies sollte eine ziemlich einfache Aufgabe sein, und ich dachte, dass es war, bis ich es in IE ausprobierte. Der folgende Code funktioniert in Chrom und Safari in Ordnung. Ich möchte die Formularauthentifizierung verwenden, und daher habe ich eingestellt generasacodicetagpre.

in web.config. Dadurch werden den Besucher beim Eintritt in meine App folgende AktionResult leitet: generasacodicetagpre.

Dann wird der Benutzer auf eine Facebook-Seite umgeleitet, und ein Zugriffstoken wird in mein OAuth ActionResult zurückgeschickt: generasacodicetagpre.

Was ich hier versuche, ist zuerst zu überprüfen, ob das Token, das ich von der Umleitung zurückkomme, gültig ist. Wenn ja, dann ziehe ich einige Daten über den Besucher, wie FacebookID und Name. Ich stimme ihm dann mit meiner Datenbank überein, um zu sehen, ob der Benutzer bereits vorhanden ist, und wenn nicht, erstelle ich einen. Ich weide auch eine Rolle für den Benutzer in meinem benutzerdefinierten Rollanbieter, aber ich hatte das unendliche Schleifenproblem vor diesem. Dann setze ich generasacodicetagpre.

und ich gehe davon aus, dass dies der Kern ist, um den Spur von zu halten, wobei ein Besucher autorisiert ist oder nicht. Soweit ich verstehe, wenn der Besucher versucht, ein ActionResult-ActionResult zu nennen, das [Authorize] anzurechnen, prüft das System auf diesen Cookie.

Nun, könnte jemand bitte klären, warum der oben genannte Code in Chrom / Safari arbeitet, aber schleift aber durch Anmeldung und dann oauth unendlich in IE in IE?

Meine App verwendet MVC 3, EF-Code zuerst und Facebook C # SDK 5.0.25

War es hilfreich?

Lösung

Okay, so i figured out that the problem was triggered by the [Authorize] annotation, as expected. The Facebook SDK has a [CanvasAuthorize] annotation, and when i switch to using this, IE works fine and does not login forever.

Before this, i tried using cookieless authentication, but IE still didn't want to play along.

As far as i have figured out, the problem occurs because Facebook apps are inside an IFrame. This supposedly screws something up with cookies and trust. If someone knows why this is, i would appreciate to hear about it.

Also, if anyone knows how to use and maintain roles, easily, with this [CanvasAuthorize], i would be glad to know.

Andere Tipps

I know this seems obvious but are you sure cookies aren't disabled in IE? There is an option to disable cookies in developer tools.

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