Wie mache ich FB.ui ({method: 'auth.login' ...) mit Anzeige: 'iframe' anstelle von 'popup'?

8

Ich arbeite an einem Login für eine einfache Facebook-App. Ich bin in der Lage, das JavaScript SDK zu verwenden, um ein Login / erweiterte Berechtigungen Dialog in einem Popup-Fenster mit FB.login oder den folgenden Code erfolgreich zu präsentieren:

%Vor%

Das Problem ist ... Ich mag Popup-Fenster nicht so sehr. Von einem UI-Standpunkt aus denke ich, dass sie sich wohl fühlen, als ob sie nicht zum Rest der App gehören. Und damit sie per JavaScript angezeigt werden, muss der Benutzer ohne Grund einen zusätzlichen Klick machen - um Popup - Blocker zu umgehen, muss der Benutzer auf einen Login - Button klicken (was im Prinzip sinnlos ist, da der App weiß, dass sie eine Login-Schaltfläche anzeigen muss, sie weiß bereits, dass sich der Benutzer anmelden muss und kann auch den Berechtigungsdialog anzeigen).

Also, dachte ich, warum nicht stattdessen ein iframe? Keine Probleme mit Popup-Blockern, die gut in die Seite eingebettet sind, und Facebook scheint sie zu lieben.

Ein wenig Graben in der letzten (2.1.2) JavaScript SDK-Quelle und verschiedene andere Beiträge im Facebook-Entwickler-Forum scheint darauf hinzuweisen, dass man "display: 'iframe'" als Teil der Optionen zu FB.ui übergeben kann.

Aber wenn ich es ausprobiere, bekomme ich, obwohl der Iframe erscheint, statt den Berechtigungsdialog zu bekommen:

  

"Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal."

(Hinweis: Ein erneuter Versuch führt später zu denselben Ergebnissen.)

Gibt es einen Trick, um dies zum Laufen zu bringen, oder ist es aus irgendeinem Grund verboten?

    
Weston C 30.11.2010, 07:00
quelle

3 Antworten

2

Versuchen Sie, FB.login anstelle von FB..ui zu verwenden. Wenn der Benutzer bereits angemeldet ist und über FB.login die gewünschten Berechtigungen erhält, gibt es keinen Dialog. Andernfalls wird eine Inline-Meldung angezeigt, die zusätzliche Berechtigungen / Anmeldung anfordert.

Es ist ein wenig kontraintuitiv, eine Login-Funktion zu verwenden, um mehr Berechtigungen zu erhalten, wenn der Benutzer bereits angemeldet ist. Aber es funktioniert.

    
Brent Baisley 27.08.2011 18:08
quelle
1

Sie können dies versuchen:

Ich benutze folgende Methode vor ca. 6 Monaten. :)

%Vor%     
Mustafa Amin 24.12.2012 13:26
quelle
1

Nicht mehr möglich (Jul 2014), aber Sie könnten und können immer Ihren eigenen iFrame erstellen und ihn mit einer Seite füllen, die von Ihrem Server zu einem vollständigen Seiten-FB-Login umleitet.

Siehe Ссылка :

  

Wenn Sie die URL-Umleitungsdialogimplementierung verwenden, dann dies   wird eine ganzseitige Anzeige sein, die auf Facebook.com angezeigt wird. Diese Anzeige   Typ heißt Seite.

Der FB iframe funktionierte zum Zeitpunkt der Frage entweder mit display: 'iframe' mit FB.ui() wie von Mustafa vorgeschlagen oder mit FB.login() (zu bestimmten Zeitpunkten war der Dialogmodus aktiviert, wenn der FB korrekt eingebunden war) , manchmal musstest du auch den Modus anzeigen).

Dies wurde ausgeschaltet, höchstwahrscheinlich Anfang 2014 & amp; wegen Clickjacking. Aus der oben verlinkten Referenz:

  

Wenn Sie das JavaScript SDK verwenden, wird standardmäßig ein Popup angezeigt   Fenster. Sie können die Popup- oder Seitentypen auch erzwingen, wenn Sie die Option verwenden   JavaScript SDK, falls erforderlich. Iframe- und Async-Typen sind nicht gültig für   der Login-Dialog aus Sicherheitsgründen.

    
Bruno 28.07.2014 10:42
quelle