Google ログインを使用する GWT アプリケーションを開発しています。このために、UserService.createLogin() 関数に基づいてユーザーを Google ログイン ページにリダイレクトする Java サーブレットがあります。問題の Java サーブレットには、「/login」URL でアクセスできます。以前は、ユーザーがアプリケーションのログイン ボタンをクリックするたびに、次のようにウィンドウを開きました。
Window.open("/login", "Bla", "");
次に、ログイン手順が成功すると (UserService.getCurrentUser() != null)、次のように Java サーブレットでリダイレクトを実行します。
response.sendRedirect("/success.html");
success.html ファイルには、onLoad() が次のことを行う単純な行が含まれています。
<body onLoad="window.opener.loginSucceededCallback();window.close();"/>
これにより、元のウィンドウが閉じられ、Window.open() を呼び出す GWT クラスに登録した JavaScript コールバック関数「loginSucceededCallback」が呼び出されます。これはうまくいきます。
GWT アプリケーションをリロードする必要がないため、別のウィンドウに Google ログインを表示しています。ただし、Google ログイン ページをポップアップ ウィンドウ (または別のタブ) に表示するのではなく、GWT アプリ内に埋め込むことができれば、はるかに優れています。このために、外部ページの表示を可能にする Frame() または NamedFrame() オブジェクトの使用を検討していました。このようなフレームで Google ログイン ページを正常に表示できますが、(Google で) ログインが成功すると、success.html の JavaScript コードを取得して、GWT コードのコールバック関数を正しく呼び出すことができません。少なくとも私が思うに、明確な「window」または「window.opener」オブジェクトはもうありません。私の JavaScript の知識も限られており、既存のフォーラムの投稿のどれも私に光を見させてくれませんでした...
サーバー側でのログインの成功がGWTクライアントに通知されるように、これらのコードをリンクする方法を知っている人はいますか? FormPanel と Frame() で何かできますか?
ありがとう、
ラルフ