2012-06-11 41 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