2012-06-11 39 views
1

目前,我有一個基於GWT應用 「/app.htm」GWT在(瀏覽器)>的OpenID彈出

它顯示的OpenID登錄按鈕,做了

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

這個servlet準備了一些東西來調用谷歌的openid頁面,然後返回到返回url。這是工程,但app.html也顯示谷歌地圖,這是重載時重。

我想做到這一點在新窗口(一種彈出窗口),以避免重裝「app.htm」

在一個完美的世界,當OpenID的窗口關閉,將其發送到app.htm東西說 「準備好了,再做你的loginRpc查詢」

我已經嘗試做一個Frame,但我得到

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

使用gwt2.4和NO gae

回答

1

您想要使用OpenID UI Extension。在JavaScript中有sample code,這應該是相對容易移植到GWT(或使用JSNI更容易打包)。

基本上,它使用window.open()啓動的OpenID簽名過程在一個彈出窗口,並且它監視窗口對象(通過window.open()返回,這需要在使用GWT JSNI,作爲com.google.gwt.user.client.Window#open不返回它),看它是否已關閉或未關閉(並且您的return_to頁面可能包含一個腳本,以便在需要時自動關閉該窗口)。
當彈出窗口關閉時,您可以重試您的請求,並且如果您檢測到用戶仍未登錄,可能會再次啓動簽名過程。

他們似乎沒有使用它,但我想你可以從後面用window.openerreturn_to頁面(和暴露一些回調方法通過JSNI:https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#calling)傳達給你的應用程序

+0

謝謝您的回答,我會嘗試這個明天。我保持開放至明天晚上,也許還有其他提示。你會明白的;-) – Overnuts