Wie machen FB.ui({ method: 'auth.login',...) mit display: 'iframe', anstatt 'popup'?
Ich arbeite an einem login für eine einfache Facebook-app. Ich bin in der Lage, die JavaScript-SDK verwenden, um erfolgreich für ein login /erweiterte Berechtigungen-dialog in einem popup-Fenster, die entweder mit FB.login oder den folgenden code:
FB.ui({ method: 'auth.login',
perms: 'read_stream,publish_stream',
display: 'popup' },
function (rsp) {
fg_log('on login');
if(rsp.session) {
if(rsp.perms) {
fg_log('PERMS: ',rsp.perms);
} else {
fg_log('Hmm. No permissions');
}
} else {
fg_log('Hmm. No login');
}
}
);
Das problem ist... ich weiß nicht, wie popup windows viel. Aus UI-Sicht, ich denke, Sie fühlen sich, wie Sie gehören nicht zum rest der app. Und Sie zu zeigen, bis über JavaScript erfordern auch eine extra-Klick auf die der Benutzer ohne Grund-um zu umgehen, popup-Blocker, hat der Benutzer zum Klick auf etwas wie eine login-Schaltfläche (weitgehend sinnlos, da durch die Zeit, die die app kennt, die es braucht, um die Anzeige eines login-button, der es bereits weiß, muss der Benutzer-log-in und kann auch nur das Dialogfeld Berechtigungen).
So, ich dachte, warum nicht ein iframe statt? Keine Probleme mit popup-Blocker, schön eingebettet in die Seite, und Facebook scheint es zu lieben 'em.
Ein wenig Graben in der jüngsten (2.1.2) JavaScript-SDK source und diverse andere Beiträge auf der Facebook developers forum scheint darauf hinzudeuten, dass einem passieren kann "display: 'iframe'" als Teil der Optionen, um FB.ui.
Aber wenn ich es versuche, obwohl das iframe macht kommen, anstatt die Berechtigungen dialog, den ich bekommen:
"Ein Fehler ist aufgetreten mit . Bitte versuchen Sie es später erneut."
(Hinweis: versuchen Sie später erneut, liefert die gleichen Ergebnisse.)
gibt es da einen trick, um dieses zu erhalten, um zu arbeiten, oder ist es verboten, aus irgendeinem Grund?
- Dies ist nicht wirklich eine Antwort... aber ich habe gesehen, unterschiedlichem Verhalten, wo Facebook wird manchmal zeigt und manchmal zeigen Sie das anderen, je mehrere Dinge, die außerhalb meiner Kontrolle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, mit FB.Anmeldung anstelle von FB..ui. Wenn der Benutzer bereits angemeldet ist, und erteilt die Berechtigungen, die Sie fordern über FB.login, dann gibt es keinen dialog. Ansonsten ist ein "inline" angezeigt und beantragen die zusätzlichen Berechtigungen/login.
Es ist ein wenig eingängig, um einen login-Funktion, um mehr Berechtigungen wenn der Benutzer bereits angemeldet ist. Aber es funktioniert.
Nicht mehr möglich (Juli 2014), aber Sie konnte und kann immer noch schaffen, Ihre eigenen iframe und füllen Sie es mit einer Seite, die Umleitungen von Ihrem server zu einer vollständigen Seite FB login.
Sehen https://developers.facebook.com/docs/reference/dialogs/oauth/ :
FB-iframe arbeitete zu der Zeit Stand die Frage im Mittelpunkt, indem Sie entweder über
display: 'iframe'
mitFB.ui()
als Mustafa vorgeschlagen oder mitFB.login()
(an einigen Punkten in der Zeit, die es standardmäßig auf "dialog" - Modus, wenn der FB war richtig inited, andere Zeiten, die Sie hatten, um Anzeige-Modus als auch).Dieser ausgeschaltet wurde, wahrscheinlich Anfang 2014 & durch clickjacking. Aus der Referenz oben verlinkten:
Können Sie versuchen, diese:
Verwende ich die folgende Methode ca 6 Monate her. 🙂