在浏览器的子窗口中登录完成后通知父窗口

时间:2017-10-10 06:01:37

标签: javascript node.js facebook oauth socket.io

我正在开发一个网站,可以选择连接多个社交帐户,例如连接facebook等。  单击“连接”按钮可在弹出窗口中打开Facebook(或任何社交网站)登录。 我希望我的父窗口在登录完成时得到通知。

我在服务器上使用node.js并使用facebook oauth。

我有一个选项是在父窗口中创建一个到服务器的套接字连接..在本地存储中给它一个唯一的id和store id。在成功登录并由我的服务器重定向后的子窗口中..我登陆/重定向到没有参数的子窗口..获取本地存储唯一ID并将其发送到服务器和服务器依次将事件发送到父窗口套接字连接所需数据/通知。

但我觉得使用本地存储不是一个好方法。所以我试图找到其他方法来实现这个目标,我被困在它上面。

你们可以就如何实现这一点分享你们的想法吗?有没有更好的方法来实现这个目标。

1 个答案:

答案 0 :(得分:1)

您尚未提供任何代码。因此,假设您当前的设置非常困难。 我假设您使用window.open()方法打开弹出窗口。

您可以在社交登录点击按钮上执行此类操作:

window.loginCallback = function(obj) {
    // do something
};
window.open('url/to/social/login');

然后在弹出窗口中,从成功登录重定向后,重定向到弹出窗口中的其他页面,其中包含如下脚本:

window.opener.loginCallback(dataToSend);
window.close();

如果你使用nodejs和expressjs,你可以通过任何模板系统设置dataToSend

希望它有所帮助。

注意:代码未经过测试,可能包含错误。

请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Window/opener