我的应用程序用于oauth
允许用户登录 Salesforce,登录后,他们可以访问该应用程序。目前发生的情况是:
- 用户单击“登录”链接,并被重定向到 Salesforce
- 用户登录 Salesforce,并被重定向到我指定的 URL
- 我的服务器处理请求并将它们重定向到主页
我想做的是:
- 用户单击“登录”链接,会出现一个
window.open
带有 Salesforce 登录页面的新窗口 ( ) - 用户登录,并被重定向到我指定的 URL
- 一旦服务器重定向到主页,主页就会在窗口中触发
success
orlogged_in
事件,原始页面会监听并解释该事件
这是我到目前为止所做的(假设有<button id="login">Log in</button>
)
$('button#login').on('click', function() {
var popup = window.open('/auth/salesforce', 'login', '...');
popup.addEventListener('success', function() {
popup.close();
alert('Logged in');
});
});
在主页中,我添加了用户成功登录时显示的部分:
var event = window.createEvent('loginSuccess');
event.initEvent('success', true, true);
window.dispatchEvent(event);
但是,该success
事件永远不会被触发。如何success
在主页中触发事件,以提醒原始页面用户已成功登录?
编辑:我注意到有window.postMessage
方法,如MDN docs中所引用。这是我应该使用的吗?或者我应该使用另一种方法来捕获新创建的成功登录事件window
?