私のアプリケーションは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
ユーザーが正常にログインしたことを元のページに警告するために、ホームページでイベントを発生させるにはどうすればよいですか?
編集: MDN docswindow.postMessage
で参照されているように、メソッドがあることに気付きました。これは私が使うべきものですか?または、別の方法を使用して、新しく作成された で成功したログイン イベントをキャプチャする必要がありますか?window