oauth2 in Facebook sind zwei Schritte erforderlich ist, rufen Sie autorisieren Code zu bekommen, dann rufen access_token Token zu erhalten. Ein Weg, um mit dem Pop-Login umzugehen:
Login-URL in einem neuen Fenster öffnen, genau wie Sie, wenn die Facebook-Weiterleitung zurück zu Ihrer URL im Popup, setzen Sie den Cookie entweder durch serverseitigen Code oder mit Javascript zu Capture Url Query Parameter, wenn die Seite in das Popup geladen wird, schließen Sie das Fenster sofort window.close.
Auf dem Haupt-Seite, nach dem window.open Code, fügen Sie JavaScript-Code zu erkennen, ob Popup geschlossen und erfassen das Cookie:
var signinWin;
$('#FacebookBtn').click(function() {
var pos = screenCenterPos(800, 500);
signinWin = window.open("[URL]", "SignIn", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + pos.x + ",top=" + pos.y);
setTimeout(CheckLoginStatus, 2000);
signinWin.focus();
return false;
});
function CheckLoginStatus() {
if (signinWin.closed) {
$('#UserInfo').text($.cookie("some_cookie");
}
else setTimeout(CheckLoginStatus, 1000);
}
Statt einen Timer im Originalfenster der Verwendung (die mehr als man erwarten würde verzögern könnte), ein Skript in der Umleitungs-URL verwenden, die im Popup-Fenster ausgeführt werden: if (! opener && "" = opener.location) { \t opener.handler(); } window.close(); Dies ruft Handler() im Eröffnungsfenster auf und schließt das Popup. Der Handler wird nur aufgerufen, wenn das übergeordnete Fenster noch geöffnet ist und nicht zu einer anderen Domäne navigiert wurde. – Avner
Ich denke, dass die Funktion screenCenterPos fehlt. –
'$ ('# Userinfo') Text ($ cookie ("some_cookie");..' Sollte '$ ('# Userinfo') seinen Text ($ cookie ("some_cookie"));...' Sie fehlen das Schließen ')'. – Gogol