1

現在、GWT ベースのアプリケーション「/app.htm」があります。

これは、openId ログイン ボタンを表示します。

Window.Location.assign("/openidServlet?return=/app.htm")

このサーブレットは、Google の openid ページを呼び出すための準備をしてから、リターン URL に戻ります。これは機能しますが、app.html には Google マップも表示されるため、リロード時に負荷がかかります。

「app.htm」のリロードを避けるために、これを新しいウィンドウ (一種のポップアップ) で実行したいと思います。

完璧な世界では、openid ウィンドウが閉じると、app.htm に「準備ができました。loginRpc クエリをもう一度実行してください」というメッセージが送信されます。

私はすでにそれをやろうとしましたFrameが、私は得る

Refused to display document because display forbidden by X-Frame-Options

gwt2.4 と NO gae での作業

4

1 に答える 1

1

OpenIDUI拡張機能を使用する必要があります。JavaScriptで利用可能なサンプルコードがあります。これはGWTへの移植が比較的簡単です(またはJSNIを使用してより簡単にラップできます)。

基本的にwindow.open()、ポップアップウィンドウでOpenID署名プロセスを開始するために使用し、ウィンドウオブジェクト(によって返されるwindow.open()、GWTでJSNIを使用する必要があり、返されcom.google.gwt.user.client.Window#openない)を監視して、閉じられているかどうか(およびreturn_to必要に応じて、ページにウィンドウを自動的に閉じるスクリプトを含めることができます)。
ポップアップが閉じたら、リクエストを再試行できます。ユーザーがまだログインしていないことが検出された場合は、署名プロセスを再開できます。

彼らはそれを使用していないようですが、(そしてJSNIを介していくつかのコールバックメソッドを公開する:httpsreturn_to ://developers.google.com/web-toolkit/doc/latest)を使用してページからアプリに通信できると思います/ DevGuideCodingBasicsJSNI#callingwindow.opener

于 2012-06-11T11:18:38.000 に答える